home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / progjour / 1991 / 02 / watcom / windows.h < prev    next >
C/C++ Source or Header  |  1990-12-21  |  109KB  |  3,451 lines

  1. /****************************************************************************/
  2. /*                                        */
  3. /*  WINDOWS.H -                                 */
  4. /*                                        */
  5. /*    Include file for Windows 3.0 applications                */
  6. /*                                        */
  7. /****************************************************************************/
  8.  
  9. /*  If defined, the following flags inhibit definition
  10.  *     of the indicated items.
  11.  *
  12.  *  NOGDICAPMASKS     - CC_*, LC_*, PC_*, CP_*, TC_*, RC_
  13.  *  NOVIRTUALKEYCODES - VK_*
  14.  *  NOWINMESSAGES     - WM_*, EM_*, LB_*, CB_*
  15.  *  NOWINSTYLES       - WS_*, CS_*, ES_*, LBS_*, SBS_*, CBS_*
  16.  *  NOSYSMETRICS      - SM_*
  17.  *  NOMENUS          - MF_*
  18.  *  NOICONS          - IDI_*
  19.  *  NOKEYSTATES       - MK_*
  20.  *  NOSYSCOMMANDS     - SC_*
  21.  *  NORASTEROPS       - Binary and Tertiary raster ops
  22.  *  NOSHOWWINDOW      - SW_*
  23.  *  OEMRESOURCE       - OEM Resource values
  24.  *  NOATOM          - Atom Manager routines
  25.  *  NOCLIPBOARD       - Clipboard routines
  26.  *  NOCOLOR          - Screen colors
  27.  *  NOCTLMGR          - Control and Dialog routines
  28.  *  NODRAWTEXT          - DrawText() and DT_*
  29.  *  NOGDI          - All GDI defines and routines
  30.  *  NOKERNEL          - All KERNEL defines and routines
  31.  *  NOUSER          - All USER defines and routines
  32.  *  NOMB          - MB_* and MessageBox()
  33.  *  NOMEMMGR          - GMEM_*, LMEM_*, GHND, LHND, associated routines
  34.  *  NOMETAFILE          - typedef METAFILEPICT
  35.  *  NOMINMAX          - Macros min(a,b) and max(a,b)
  36.  *  NOMSG          - typedef MSG and associated routines
  37.  *  NOOPENFILE          - OpenFile(), OemToAnsi, AnsiToOem, and OF_*
  38.  *  NOSCROLL          - SB_* and scrolling routines
  39.  *  NOSOUND          - Sound driver routines
  40.  *  NOTEXTMETRIC      - typedef TEXTMETRIC and associated routines
  41.  *  NOWH          - SetWindowsHook and WH_*
  42.  *  NOWINOFFSETS      - GWL_*, GCL_*, associated routines
  43.  *  NOCOMM          - COMM driver routines
  44.  *  NOKANJI          - Kanji support stuff.
  45.  *  NOHELP            - Help engine interface.
  46.  *  NOPROFILER          - Profiler interface.
  47.  *  NODEFERWINDOWPOS  - DeferWindowPos routines
  48.  */
  49.  
  50. #ifdef RC_INVOKED
  51.  
  52. /* Turn off a bunch of stuff to ensure that RC files compile OK. */
  53. #define NOATOM
  54. #define NOGDI
  55. #define NOGDICAPMASKS
  56. #define NOMETAFILE
  57. #define NOMINMAX
  58. #define NOMSG
  59. #define NOOPENFILE
  60. #define NORASTEROPS
  61. #define NOSCROLL
  62. #define NOSOUND
  63. #define NOSYSMETRICS
  64. #define NOTEXTMETRIC
  65. #define NOWH
  66. #define NOCOMM
  67. #define NOKANJI
  68.  
  69. #endif /* RC_INVOKED */
  70.  
  71.  
  72. /*--------------------------------------------------------------------------*/
  73. /*  General Purpose Defines                            */
  74. /*--------------------------------------------------------------------------*/
  75.  
  76. #define NULL            0
  77. #define FALSE            0
  78. #define TRUE            1
  79.  
  80. #define FAR            far
  81. #define NEAR            near
  82. #define LONG            long
  83. #define VOID            void
  84. #define PASCAL            pascal
  85.  
  86. #ifndef NOMINMAX
  87.  
  88. #ifndef max
  89. #define max(a,b)            (((a) > (b)) ? (a) : (b))
  90. #endif
  91.  
  92. #ifndef min
  93. #define min(a,b)            (((a) < (b)) ? (a) : (b))
  94. #endif
  95.  
  96. #endif  /* NOMINMAX */
  97.  
  98. #define MAKELONG(a, b)        ((LONG)(((WORD)(a)) | ((DWORD)((WORD)(b))) << 16))
  99. #define LOWORD(l)        ((WORD)(l))
  100. #define HIWORD(l)        ((WORD)(((DWORD)(l) >> 16) & 0xFFFF))
  101. #define LOBYTE(w)        ((BYTE)(w))
  102. #define HIBYTE(w)        ((BYTE)(((WORD)(w) >> 8) & 0xFF))
  103.  
  104. typedef int            BOOL;
  105. typedef unsigned char        BYTE;
  106. typedef unsigned int        WORD;
  107. typedef unsigned long        DWORD;
  108. typedef char near        *PSTR;
  109. typedef char near        *NPSTR;
  110. typedef char far        *LPSTR;
  111. typedef BYTE near        *PBYTE;
  112. typedef BYTE far        *LPBYTE;
  113. typedef int near        *PINT;
  114. typedef int far         *LPINT;
  115. typedef WORD near        *PWORD;
  116. typedef WORD far        *LPWORD;
  117. typedef long near        *PLONG;
  118. typedef long far        *LPLONG;
  119. typedef DWORD near        *PDWORD;
  120. typedef DWORD far        *LPDWORD;
  121. typedef void far        *LPVOID;
  122.  
  123. #ifndef WIN_INTERNAL
  124. typedef WORD            HANDLE;
  125. typedef HANDLE            HWND;
  126. #endif
  127.  
  128. typedef HANDLE            *PHANDLE;
  129. typedef HANDLE NEAR        *SPHANDLE;
  130. typedef HANDLE FAR        *LPHANDLE;
  131. typedef HANDLE            GLOBALHANDLE;
  132. typedef HANDLE            LOCALHANDLE;
  133. typedef int (FAR PASCAL *FARPROC)();
  134. typedef int (NEAR PASCAL *NEARPROC)();
  135.  
  136. typedef HANDLE            HSTR;
  137. typedef HANDLE            HICON;
  138. typedef HANDLE            HDC;
  139. typedef HANDLE            HMENU;
  140. typedef HANDLE            HPEN;
  141. typedef HANDLE            HFONT;
  142. typedef HANDLE            HBRUSH;
  143. typedef HANDLE            HBITMAP;
  144. typedef HANDLE            HCURSOR;
  145. typedef HANDLE            HRGN;
  146. typedef HANDLE            HPALETTE;
  147.  
  148. typedef DWORD            COLORREF;
  149.  
  150. #ifndef WIN_INTERNAL
  151. typedef struct tagRECT
  152.   {
  153.     int     left;
  154.     int     top;
  155.     int     right;
  156.     int     bottom;
  157.   } RECT;
  158. #endif
  159.  
  160. typedef RECT            *PRECT;
  161. typedef RECT NEAR        *NPRECT;
  162. typedef RECT FAR        *LPRECT;
  163.  
  164. typedef struct tagPOINT
  165.   {
  166.     int     x;
  167.     int     y;
  168.   } POINT;
  169. typedef POINT            *PPOINT;
  170. typedef POINT NEAR        *NPPOINT;
  171. typedef POINT FAR        *LPPOINT;
  172.  
  173.  
  174. /*--------------------------------------------------------------------------*/
  175. /*  KERNEL Section                                */
  176. /*--------------------------------------------------------------------------*/
  177.  
  178. #ifndef NOKERNEL
  179.  
  180. /* Loader Routines */
  181. WORD    FAR PASCAL GetVersion(void);
  182. WORD    FAR PASCAL GetNumTasks(void);
  183. HANDLE    FAR PASCAL GetCodeHandle(FARPROC);
  184. void    FAR PASCAL GetCodeInfo(FARPROC lpProc, LPVOID lpSegInfo);
  185. HANDLE    FAR PASCAL GetModuleHandle(LPSTR);
  186. int    FAR PASCAL GetModuleUsage(HANDLE);
  187. int    FAR PASCAL GetModuleFileName(HANDLE, LPSTR, int);
  188. int    FAR PASCAL GetInstanceData(HANDLE, NPSTR, int);
  189. FARPROC FAR PASCAL GetProcAddress(HANDLE, LPSTR);
  190. FARPROC FAR PASCAL MakeProcInstance(FARPROC, HANDLE);
  191. void    FAR PASCAL FreeProcInstance(FARPROC);
  192. HANDLE    FAR PASCAL LoadLibrary(LPSTR);
  193. HANDLE  FAR PASCAL LoadModule(LPSTR, LPVOID);
  194. BOOL    FAR PASCAL FreeModule(HANDLE);
  195. void    FAR PASCAL FreeLibrary(HANDLE);
  196. DWORD   FAR PASCAL GetFreeSpace(WORD);
  197. WORD    FAR PASCAL WinExec(LPSTR, WORD);
  198. void    FAR PASCAL DebugBreak();
  199. void    FAR PASCAL OutputDebugString(LPSTR);
  200. void    FAR PASCAL SwitchStackBack();
  201. void    FAR PASCAL SwitchStackTo(WORD, WORD, WORD);
  202. WORD    FAR PASCAL GetCurrentPDB(void);
  203.  
  204. #ifndef NOOPENFILE
  205.  
  206. /* OpenFile() Structure */
  207. typedef struct tagOFSTRUCT
  208.   {
  209.     BYTE    cBytes;
  210.     BYTE    fFixedDisk;
  211.     WORD    nErrCode;
  212.     BYTE    reserved[4];
  213.     BYTE    szPathName[128];
  214.   } OFSTRUCT;
  215. typedef OFSTRUCT        *POFSTRUCT;
  216. typedef OFSTRUCT NEAR        *NPOFSTRUCT;
  217. typedef OFSTRUCT FAR        *LPOFSTRUCT;
  218.  
  219. /* OpenFile() Flags */
  220. #define OF_READ         0x0000
  221. #define OF_WRITE        0x0001
  222. #define OF_READWRITE        0x0002
  223. #define OF_SHARE_COMPAT        0x0000
  224. #define OF_SHARE_EXCLUSIVE  0x0010
  225. #define OF_SHARE_DENY_WRITE 0x0020
  226. #define OF_SHARE_DENY_READ  0x0030
  227. #define OF_SHARE_DENY_NONE  0x0040
  228. #define OF_PARSE        0x0100
  229. #define OF_DELETE        0x0200
  230. #define OF_VERIFY        0x0400
  231. #define OF_CANCEL        0x0800
  232. #define OF_CREATE        0x1000
  233. #define OF_PROMPT        0x2000
  234. #define OF_EXIST        0x4000
  235. #define OF_REOPEN        0x8000
  236.  
  237. int  FAR PASCAL OpenFile(LPSTR, LPOFSTRUCT, WORD);
  238.  
  239. /* GetTempFileName() Flags */
  240. #define TF_FORCEDRIVE        (BYTE)0x80
  241.  
  242. BYTE FAR PASCAL GetTempDrive(BYTE);
  243. int  FAR PASCAL GetTempFileName(BYTE, LPSTR, WORD, LPSTR);
  244. WORD FAR PASCAL SetHandleCount(WORD);
  245.  
  246. WORD FAR PASCAL GetDriveType(int);
  247. /* GetDriveType return values */
  248. #define DRIVE_REMOVABLE 2
  249. #define DRIVE_FIXED     3
  250. #define DRIVE_REMOTE    4
  251.  
  252. #endif /* NOOPENFILE */
  253.  
  254. #ifndef NOMEMMGR
  255.  
  256. /* Global Memory Flags */
  257. #define GMEM_FIXED        0x0000
  258. #define GMEM_MOVEABLE        0x0002
  259. #define GMEM_NOCOMPACT        0x0010
  260. #define GMEM_NODISCARD        0x0020
  261. #define GMEM_ZEROINIT        0x0040
  262. #define GMEM_MODIFY        0x0080
  263. #define GMEM_DISCARDABLE    0x0100
  264. #define GMEM_NOT_BANKED     0x1000
  265. #define GMEM_SHARE        0x2000
  266. #define GMEM_DDESHARE        0x2000
  267. #define GMEM_NOTIFY        0x4000
  268. #define GMEM_LOWER        GMEM_NOT_BANKED
  269.  
  270. #define GHND            (GMEM_MOVEABLE | GMEM_ZEROINIT)
  271. #define GPTR            (GMEM_FIXED | GMEM_ZEROINIT)
  272.  
  273. #define GlobalDiscard(h) GlobalReAlloc(h, 0L, GMEM_MOVEABLE)
  274.  
  275. HANDLE FAR PASCAL GlobalAlloc(WORD, DWORD);
  276. DWORD  FAR PASCAL GlobalCompact(DWORD);
  277. HANDLE FAR PASCAL GlobalFree(HANDLE);
  278. DWORD  FAR PASCAL GlobalHandle(WORD);
  279. LPSTR  FAR PASCAL GlobalLock(HANDLE);
  280. HANDLE FAR PASCAL GlobalReAlloc(HANDLE, DWORD, WORD);
  281. DWORD  FAR PASCAL GlobalSize(HANDLE);
  282. BOOL   FAR PASCAL GlobalUnlock(HANDLE);
  283. WORD   FAR PASCAL GlobalFlags(HANDLE);
  284. LPSTR  FAR PASCAL GlobalWire(HANDLE);
  285. BOOL   FAR PASCAL GlobalUnWire(HANDLE);
  286. BOOL   FAR PASCAL GlobalUnlock(HANDLE);
  287. HANDLE FAR PASCAL GlobalLRUNewest(HANDLE);
  288. HANDLE FAR PASCAL GlobalLRUOldest(HANDLE);
  289. VOID   FAR PASCAL GlobalNotify(FARPROC);
  290. WORD   FAR PASCAL GlobalPageLock(HANDLE);
  291. WORD   FAR PASCAL GlobalPageUnlock(HANDLE);
  292. VOID   FAR PASCAL GlobalFix(HANDLE);
  293. BOOL   FAR PASCAL GlobalUnfix(HANDLE);
  294.  
  295. /* Flags returned by GlobalFlags (in addition to GMEM_DISCARDABLE) */
  296. #define GMEM_DISCARDED        0x4000
  297. #define GMEM_LOCKCOUNT        0x00FF
  298.  
  299. #define LockData(dummy)     LockSegment(0xFFFF)
  300. #define UnlockData(dummy)   UnlockSegment(0xFFFF)
  301.  
  302. HANDLE FAR PASCAL LockSegment(WORD);
  303. HANDLE FAR PASCAL UnlockSegment(WORD);
  304.  
  305. /* Local Memory Flags */
  306. #define LMEM_FIXED        0x0000
  307. #define LMEM_MOVEABLE        0x0002
  308. #define LMEM_NOCOMPACT        0x0010
  309. #define LMEM_NODISCARD        0x0020
  310. #define LMEM_ZEROINIT        0x0040
  311. #define LMEM_MODIFY        0x0080
  312. #define LMEM_DISCARDABLE    0x0F00
  313.  
  314. #define LHND            (LMEM_MOVEABLE | LMEM_ZEROINIT)
  315. #define LPTR            (LMEM_FIXED | LMEM_ZEROINIT)
  316.  
  317. #define NONZEROLHND        (LMEM_MOVEABLE)
  318. #define NONZEROLPTR        (LMEM_FIXED)
  319.  
  320. #define LNOTIFY_OUTOFMEM    0
  321. #define LNOTIFY_MOVE        1
  322. #define LNOTIFY_DISCARD     2
  323.  
  324. extern WORD NEAR * PASCAL pLocalHeap;
  325.  
  326. #define LocalDiscard(h)     LocalReAlloc(h, 0, LMEM_MOVEABLE)
  327.  
  328. HANDLE    FAR PASCAL LocalAlloc(WORD, WORD);
  329. WORD    FAR PASCAL LocalCompact(WORD);
  330. HANDLE    FAR PASCAL LocalFree(HANDLE);
  331. HANDLE    FAR PASCAL LocalHandle(WORD);
  332. BOOL    FAR PASCAL LocalInit( WORD, WORD, WORD);
  333. char NEAR * FAR PASCAL LocalLock(HANDLE);
  334. FARPROC FAR PASCAL LocalNotify(FARPROC);
  335. HANDLE    FAR PASCAL LocalReAlloc(HANDLE, WORD, WORD);
  336. WORD    FAR PASCAL LocalSize(HANDLE);
  337. BOOL    FAR PASCAL LocalUnlock(HANDLE);
  338. WORD    FAR PASCAL LocalFlags(HANDLE);
  339. WORD    FAR PASCAL LocalShrink(HANDLE, WORD);
  340.  
  341. /* Flags returned by LocalFlags (in addition to LMEM_DISCARDABLE) */
  342. #define LMEM_DISCARDED        0x4000
  343. #define LMEM_LOCKCOUNT        0x00FF
  344.  
  345. #endif /* NOMEMMGR */
  346.  
  347. LONG   FAR PASCAL SetSwapAreaSize(WORD);
  348. LPSTR  FAR PASCAL ValidateFreeSpaces(void);
  349. VOID   FAR PASCAL LimitEmsPages(DWORD);
  350. BOOL   FAR PASCAL SetErrorMode(WORD);
  351. VOID   FAR PASCAL ValidateCodeSegments(void);
  352.  
  353. LPSTR  FAR PASCAL GetDOSEnvironment(void);
  354.  
  355. WORD   FAR PASCAL AllocDStoCSAlias(WORD);
  356. WORD   FAR PASCAL AllocSelector(WORD);
  357. WORD   FAR PASCAL ChangeSelector(WORD, WORD);
  358. WORD   FAR PASCAL FreeSelector(WORD);
  359.  
  360. #define UnlockResource(h)   GlobalUnlock(h)
  361.  
  362. HANDLE FAR PASCAL FindResource(HANDLE, LPSTR, LPSTR);
  363. HANDLE FAR PASCAL LoadResource(HANDLE, HANDLE);
  364. BOOL   FAR PASCAL FreeResource(HANDLE);
  365. LPSTR  FAR PASCAL LockResource(HANDLE);
  366. FARPROC FAR PASCAL SetResourceHandler(HANDLE, LPSTR, FARPROC);
  367. HANDLE FAR PASCAL AllocResource(HANDLE, HANDLE, DWORD);
  368. WORD   FAR PASCAL SizeofResource(HANDLE, HANDLE);
  369. int    FAR PASCAL AccessResource(HANDLE, HANDLE);
  370.  
  371. #define MAKEINTRESOURCE(i)  (LPSTR)((DWORD)((WORD)(i)))
  372.  
  373. #ifndef NORESOURCE
  374.  
  375.  
  376. /* Predefined Resource Types */
  377. #define RT_CURSOR        MAKEINTRESOURCE(1)
  378. #define RT_BITMAP        MAKEINTRESOURCE(2)
  379. #define RT_ICON         MAKEINTRESOURCE(3)
  380. #define RT_MENU         MAKEINTRESOURCE(4)
  381. #define RT_DIALOG        MAKEINTRESOURCE(5)
  382. #define RT_STRING        MAKEINTRESOURCE(6)
  383. #define RT_FONTDIR        MAKEINTRESOURCE(7)
  384. #define RT_FONT         MAKEINTRESOURCE(8)
  385. #define RT_ACCELERATOR        MAKEINTRESOURCE(9)
  386. #define RT_RCDATA        MAKEINTRESOURCE(10)
  387.  
  388.  
  389.  
  390. #endif /* NORESOURCE */
  391.  
  392. void   FAR PASCAL Yield(void);
  393. HANDLE FAR PASCAL GetCurrentTask(void);
  394.  
  395. #ifndef NOATOM
  396. typedef WORD            ATOM;
  397.  
  398. #define MAKEINTATOM(i)        (LPSTR)((DWORD)((WORD)(i)))
  399.  
  400. BOOL   FAR PASCAL InitAtomTable(int);
  401. ATOM   FAR PASCAL AddAtom(LPSTR);
  402. ATOM   FAR PASCAL DeleteAtom(ATOM);
  403. ATOM   FAR PASCAL FindAtom(LPSTR);
  404. WORD   FAR PASCAL GetAtomName(ATOM, LPSTR, int);
  405. ATOM   FAR PASCAL GlobalAddAtom(LPSTR);
  406. ATOM   FAR PASCAL GlobalDeleteAtom(ATOM);
  407. ATOM   FAR PASCAL GlobalFindAtom(LPSTR);
  408. WORD   FAR PASCAL GlobalGetAtomName(ATOM, LPSTR, int);
  409. HANDLE FAR PASCAL GetAtomHandle(ATOM);
  410.  
  411. #endif /* NOATOM */
  412.  
  413. /* User Profile Routines */
  414. WORD FAR PASCAL GetProfileInt(LPSTR, LPSTR, int);
  415. int  FAR PASCAL GetProfileString(LPSTR, LPSTR, LPSTR, LPSTR, int);
  416. BOOL FAR PASCAL WriteProfileString(LPSTR, LPSTR, LPSTR);
  417. WORD FAR PASCAL GetPrivateProfileInt(LPSTR, LPSTR, int, LPSTR);
  418. int  FAR PASCAL GetPrivateProfileString(LPSTR, LPSTR, LPSTR, LPSTR, int, LPSTR);
  419. BOOL FAR PASCAL WritePrivateProfileString(LPSTR, LPSTR, LPSTR, LPSTR);
  420.  
  421. WORD FAR PASCAL GetWindowsDirectory(LPSTR,WORD);
  422. WORD FAR PASCAL GetSystemDirectory(LPSTR,WORD);
  423.  
  424. /* Catch() and Throw() */
  425. typedef int            CATCHBUF[9];
  426. typedef int FAR         *LPCATCHBUF;
  427.  
  428. int  FAR PASCAL Catch(LPCATCHBUF);
  429. void FAR PASCAL Throw(LPCATCHBUF, int);
  430.  
  431. void FAR PASCAL FatalExit(int);
  432.  
  433. void FAR PASCAL SwapRecording(WORD);
  434.  
  435. /* Character Translation Routines */
  436. int   FAR PASCAL AnsiToOem(LPSTR, LPSTR);
  437. BOOL  FAR PASCAL OemToAnsi(LPSTR, LPSTR);
  438. void  FAR PASCAL AnsiToOemBuff(LPSTR, LPSTR, int);
  439. void  FAR PASCAL OemToAnsiBuff(LPSTR, LPSTR, int);
  440. LPSTR FAR PASCAL AnsiUpper(LPSTR);
  441. WORD  FAR PASCAL AnsiUpperBuff(LPSTR, WORD);
  442. LPSTR FAR PASCAL AnsiLower(LPSTR);
  443. WORD  FAR PASCAL AnsiLowerBuff(LPSTR, WORD);
  444. LPSTR FAR PASCAL AnsiNext(LPSTR);
  445. LPSTR FAR PASCAL AnsiPrev(LPSTR, LPSTR);
  446.  
  447. /* Keyboard Information Routines */
  448. #ifndef    NOKEYBOARDINFO
  449. DWORD FAR PASCAL OemKeyScan(WORD);
  450. WORD  FAR PASCAL VkKeyScan(WORD);
  451. int   FAR PASCAL GetKeyboardType(int);
  452. WORD  FAR PASCAL MapVirtualKey(WORD, WORD);
  453. int   FAR PASCAL GetKBCodePage();
  454. int   FAR PASCAL GetKeyNameText(LONG, LPSTR, int);
  455. int   FAR PASCAL ToAscii(WORD wVirtKey, WORD wScanCode, LPSTR lpKeyState, LPVOID lpChar, WORD wFlags);
  456. #endif
  457.  
  458. #ifndef  NOLANGUAGE
  459. /* Language dependent Routines */
  460. BOOL  FAR  PASCAL IsCharAlpha(char);
  461. BOOL  FAR  PASCAL IsCharAlphaNumeric(char);
  462. BOOL  FAR  PASCAL IsCharUpper(char);
  463. BOOL  FAR  PASCAL IsCharLower(char);
  464. #endif
  465.  
  466. LONG FAR PASCAL GetWinFlags(void);
  467.  
  468. #define WF_PMODE    0x0001
  469. #define WF_CPU286    0x0002
  470. #define WF_CPU386    0x0004
  471. #define WF_CPU486    0x0008
  472. #define WF_STANDARD    0x0010
  473. #define WF_WIN286    0x0010
  474. #define WF_ENHANCED    0x0020
  475. #define WF_WIN386    0x0020
  476. #define WF_CPU086    0x0040
  477. #define WF_CPU186    0x0080
  478. #define WF_LARGEFRAME    0x0100
  479. #define WF_SMALLFRAME    0x0200
  480. #define WF_80x87    0x0400
  481.  
  482. /* WEP fSystemExit flag values */
  483. #define    WEP_SYSTEM_EXIT    1
  484. #define    WEP_FREE_DLL    0
  485.  
  486.  
  487. #ifdef OEMRESOURCE
  488.  
  489. /* OEM Resource Ordinal Numbers */
  490. #define OBM_CLOSE        32754
  491. #define OBM_UPARROW         32753
  492. #define OBM_DNARROW         32752
  493. #define OBM_RGARROW         32751
  494. #define OBM_LFARROW         32750
  495. #define OBM_REDUCE          32749
  496. #define OBM_ZOOM            32748
  497. #define OBM_RESTORE         32747
  498. #define OBM_REDUCED         32746
  499. #define OBM_ZOOMD           32745
  500. #define OBM_RESTORED        32744
  501. #define OBM_UPARROWD        32743
  502. #define OBM_DNARROWD        32742
  503. #define OBM_RGARROWD        32741
  504. #define OBM_LFARROWD        32740
  505. #define OBM_MNARROW         32739
  506. #define OBM_COMBO           32738
  507.  
  508. #define OBM_OLD_CLOSE       32767
  509. #define OBM_SIZE            32766
  510. #define OBM_OLD_UPARROW     32765
  511. #define OBM_OLD_DNARROW     32764
  512. #define OBM_OLD_RGARROW     32763
  513. #define OBM_OLD_LFARROW     32762
  514. #define OBM_BTSIZE          32761
  515. #define OBM_CHECK           32760
  516. #define OBM_CHECKBOXES      32759
  517. #define OBM_BTNCORNERS      32758
  518. #define OBM_OLD_REDUCE      32757
  519. #define OBM_OLD_ZOOM        32756
  520. #define OBM_OLD_RESTORE     32755
  521.  
  522. #define OCR_NORMAL        32512
  523. #define OCR_IBEAM        32513
  524. #define OCR_WAIT        32514
  525. #define OCR_CROSS        32515
  526. #define OCR_UP            32516
  527. #define OCR_SIZE        32640
  528. #define OCR_ICON        32641
  529. #define OCR_SIZENWSE        32642
  530. #define OCR_SIZENESW        32643
  531. #define OCR_SIZEWE        32644
  532. #define OCR_SIZENS        32645
  533. #define OCR_SIZEALL        32646
  534. #define OCR_ICOCUR        32647
  535.  
  536. #define OIC_SAMPLE        32512
  537. #define OIC_HAND        32513
  538. #define OIC_QUES        32514
  539. #define OIC_BANG        32515
  540. #define OIC_NOTE        32516
  541.  
  542. #endif /* OEMRESOURCE */
  543.  
  544. #endif /* NOKERNEL */
  545.  
  546.  
  547. /*--------------------------------------------------------------------------*/
  548. /*  GDI Section                                 */
  549. /*--------------------------------------------------------------------------*/
  550.  
  551. #ifndef NOGDI
  552.  
  553. #ifndef NORASTEROPS
  554.  
  555. /* Binary raster ops */
  556. #define R2_BLACK        1    /*  0        */
  557. #define R2_NOTMERGEPEN        2    /* DPon        */
  558. #define R2_MASKNOTPEN        3    /* DPna        */
  559. #define R2_NOTCOPYPEN        4    /* PN        */
  560. #define R2_MASKPENNOT        5    /* PDna        */
  561. #define R2_NOT            6    /* Dn        */
  562. #define R2_XORPEN        7    /* DPx        */
  563. #define R2_NOTMASKPEN        8    /* DPan        */
  564. #define R2_MASKPEN        9    /* DPa        */
  565. #define R2_NOTXORPEN        10    /* DPxn     */
  566. #define R2_NOP            11    /* D        */
  567. #define R2_MERGENOTPEN        12    /* DPno     */
  568. #define R2_COPYPEN        13    /* P        */
  569. #define R2_MERGEPENNOT        14    /* PDno     */
  570. #define R2_MERGEPEN        15    /* DPo        */
  571. #define R2_WHITE        16    /*  1        */
  572.  
  573. /*  Ternary raster operations */
  574. #define SRCCOPY         (DWORD)0x00CC0020 /* dest = source             */
  575. #define SRCPAINT        (DWORD)0x00EE0086 /* dest = source OR dest         */
  576. #define SRCAND            (DWORD)0x008800C6 /* dest = source AND dest      */
  577. #define SRCINVERT        (DWORD)0x00660046 /* dest = source XOR dest      */
  578. #define SRCERASE        (DWORD)0x00440328 /* dest = source AND (NOT dest )     */
  579. #define NOTSRCCOPY        (DWORD)0x00330008 /* dest = (NOT source)         */
  580. #define NOTSRCERASE        (DWORD)0x001100A6 /* dest = (NOT src) AND (NOT dest) */
  581. #define MERGECOPY        (DWORD)0x00C000CA /* dest = (source AND pattern)     */
  582. #define MERGEPAINT        (DWORD)0x00BB0226 /* dest = (NOT source) OR dest     */
  583. #define PATCOPY         (DWORD)0x00F00021 /* dest = pattern          */
  584. #define PATPAINT        (DWORD)0x00FB0A09 /* dest = DPSnoo             */
  585. #define PATINVERT        (DWORD)0x005A0049 /* dest = pattern XOR dest     */
  586. #define DSTINVERT        (DWORD)0x00550009 /* dest = (NOT dest)         */
  587. #define BLACKNESS        (DWORD)0x00000042 /* dest = BLACK             */
  588. #define WHITENESS        (DWORD)0x00FF0062 /* dest = WHITE             */
  589.  
  590. #endif /* NORASTEROPS */
  591.  
  592. /* StretchBlt() Modes */
  593. #define BLACKONWHITE             1
  594. #define WHITEONBLACK             2
  595. #define COLORONCOLOR             3
  596.  
  597. /* PolyFill() Modes */
  598. #define ALTERNATE             1
  599. #define WINDING              2
  600.  
  601. /* Text Alignment Options */
  602. #define TA_NOUPDATECP             0
  603. #define TA_UPDATECP             1
  604.  
  605. #define TA_LEFT              0
  606. #define TA_RIGHT             2
  607. #define TA_CENTER             6
  608.  
  609. #define TA_TOP                 0
  610. #define TA_BOTTOM             8
  611. #define TA_BASELINE             24
  612.  
  613. #define ETO_GRAYED             1
  614. #define ETO_OPAQUE             2
  615. #define ETO_CLIPPED             4
  616.  
  617. #define ASPECT_FILTERING         0x0001
  618.  
  619. #ifndef NOMETAFILE
  620.  
  621. /* Metafile Functions */
  622. #define META_SETBKCOLOR             0x0201
  623. #define META_SETBKMODE             0x0102
  624. #define META_SETMAPMODE             0x0103
  625. #define META_SETROP2             0x0104
  626. #define META_SETRELABS             0x0105
  627. #define META_SETPOLYFILLMODE         0x0106
  628. #define META_SETSTRETCHBLTMODE         0x0107
  629. #define META_SETTEXTCHAREXTRA         0x0108
  630. #define META_SETTEXTCOLOR         0x0209
  631. #define META_SETTEXTJUSTIFICATION    0x020A
  632. #define META_SETWINDOWORG         0x020B
  633. #define META_SETWINDOWEXT         0x020C
  634. #define META_SETVIEWPORTORG         0x020D
  635. #define META_SETVIEWPORTEXT         0x020E
  636. #define META_OFFSETWINDOWORG         0x020F
  637. #define META_SCALEWINDOWEXT         0x0400
  638. #define META_OFFSETVIEWPORTORG         0x0211
  639. #define META_SCALEVIEWPORTEXT         0x0412
  640. #define META_LINETO             0x0213
  641. #define META_MOVETO             0x0214
  642. #define META_EXCLUDECLIPRECT         0x0415
  643. #define META_INTERSECTCLIPRECT         0x0416
  644. #define META_ARC             0x0817
  645. #define META_ELLIPSE             0x0418
  646. #define META_FLOODFILL             0x0419
  647. #define META_PIE             0x081A
  648. #define META_RECTANGLE             0x041B
  649. #define META_ROUNDRECT             0x061C
  650. #define META_PATBLT             0x061D
  651. #define META_SAVEDC             0x001E
  652. #define META_SETPIXEL             0x041F
  653. #define META_OFFSETCLIPRGN         0x0220
  654. #define META_TEXTOUT             0x0521
  655. #define META_BITBLT             0x0922
  656. #define META_STRETCHBLT             0x0B23
  657. #define META_POLYGON             0x0324
  658. #define META_POLYLINE             0x0325
  659. #define META_ESCAPE             0x0626
  660. #define META_RESTOREDC             0x0127
  661. #define META_FILLREGION             0x0228
  662. #define META_FRAMEREGION         0x0429
  663. #define META_INVERTREGION         0x012A
  664. #define META_PAINTREGION         0x012B
  665. #define META_SELECTCLIPREGION         0x012C
  666. #define META_SELECTOBJECT         0x012D
  667. #define META_SETTEXTALIGN         0x012E
  668. #define META_DRAWTEXT             0x062F
  669.  
  670. #define    META_CHORD             0x0830
  671. #define    META_SETMAPPERFLAGS         0x0231
  672. #define    META_EXTTEXTOUT             0x0a32 
  673. #define    META_SETDIBTODEV         0x0d33
  674. #define    META_SELECTPALETTE         0x0234
  675. #define    META_REALIZEPALETTE         0x0035
  676. #define    META_ANIMATEPALETTE         0x0436
  677. #define    META_SETPALENTRIES         0x0037
  678. #define    META_POLYPOLYGON         0x0538
  679. #define    META_RESIZEPALETTE         0x0139
  680.  
  681. #define    META_DIBBITBLT             0x0940
  682. #define    META_DIBSTRETCHBLT         0x0b41
  683. #define    META_DIBCREATEPATTERNBRUSH   0x0142
  684. #define    META_STRETCHDIB             0x0f43
  685.  
  686. #define    META_DELETEOBJECT         0x01f0
  687.  
  688. #define    META_CREATEPALETTE         0x00f7
  689. #define META_CREATEBRUSH         0x00F8
  690. #define META_CREATEPATTERNBRUSH         0x01F9
  691. #define META_CREATEPENINDIRECT         0x02FA
  692. #define META_CREATEFONTINDIRECT         0x02FB
  693. #define META_CREATEBRUSHINDIRECT     0x02FC
  694. #define META_CREATEBITMAPINDIRECT    0x02FD
  695. #define META_CREATEBITMAP         0x06FE
  696. #define META_CREATEREGION         0x06FF
  697.  
  698. #endif /* NOMETAFILE */
  699.  
  700. /* GDI Escapes */
  701. #define NEWFRAME             1
  702. #define ABORTDOC             2
  703. #define NEXTBAND             3
  704. #define SETCOLORTABLE             4
  705. #define GETCOLORTABLE             5
  706. #define FLUSHOUTPUT             6
  707. #define DRAFTMODE             7
  708. #define QUERYESCSUPPORT          8
  709. #define SETABORTPROC             9
  710. #define STARTDOC             10
  711. #define ENDDOC                 11
  712. #define GETPHYSPAGESIZE          12
  713. #define GETPRINTINGOFFSET         13
  714. #define GETSCALINGFACTOR         14
  715. #define MFCOMMENT             15
  716. #define GETPENWIDTH             16
  717. #define SETCOPYCOUNT             17
  718. #define SELECTPAPERSOURCE         18
  719. #define DEVICEDATA             19
  720. #define PASSTHROUGH             19
  721. #define GETTECHNOLGY             20
  722. #define GETTECHNOLOGY             20
  723. #define SETENDCAP             21
  724. #define SETLINEJOIN             22
  725. #define SETMITERLIMIT             23
  726. #define BANDINFO             24
  727. #define DRAWPATTERNRECT          25
  728. #define GETVECTORPENSIZE         26
  729. #define GETVECTORBRUSHSIZE         27
  730. #define ENABLEDUPLEX             28
  731. #define GETSETPAPERBINS          29
  732. #define GETSETPRINTORIENT         30
  733. #define ENUMPAPERBINS             31
  734. #define SETDIBSCALING             32
  735. #define EPSPRINTING                 33
  736. #define ENUMPAPERMETRICS            34
  737. #define GETSETPAPERMETRICS          35
  738. #define POSTSCRIPT_DATA             37
  739. #define POSTSCRIPT_IGNORE         38
  740. #define GETEXTENDEDTEXTMETRICS         256
  741. #define GETEXTENTTABLE             257
  742. #define GETPAIRKERNTABLE         258
  743. #define GETTRACKKERNTABLE         259
  744. #define EXTTEXTOUT             512
  745. #define ENABLERELATIVEWIDTHS         768
  746. #define ENABLEPAIRKERNING         769
  747. #define SETKERNTRACK             770
  748. #define SETALLJUSTVALUES         771
  749. #define SETCHARSET             772
  750.  
  751. #define STRETCHBLT             2048
  752. #define BEGIN_PATH             4096
  753. #define CLIP_TO_PATH             4097
  754. #define END_PATH             4098
  755. #define EXT_DEVICE_CAPS             4099
  756. #define RESTORE_CTM             4100
  757. #define SAVE_CTM                 4101
  758. #define SET_ARC_DIRECTION         4102
  759. #define SET_BACKGROUND_COLOR         4103
  760. #define SET_POLY_MODE             4104
  761. #define SET_SCREEN_ANGLE         4105
  762. #define SET_SPREAD             4106
  763. #define TRANSFORM_CTM             4107
  764. #define SET_CLIP_BOX             4108
  765. #define SET_BOUNDS                   4109
  766. #define SET_MIRROR_MODE              4110
  767.  
  768. /* Spooler Error Codes */
  769. #define SP_NOTREPORTED             0x4000
  770. #define SP_ERROR             (-1)
  771. #define SP_APPABORT             (-2)
  772. #define SP_USERABORT             (-3)
  773. #define SP_OUTOFDISK             (-4)
  774. #define SP_OUTOFMEMORY             (-5)
  775.  
  776. #define PR_JOBSTATUS             0x0000
  777.  
  778. /* Object Definitions for EnumObjects() */
  779. #define OBJ_PEN              1
  780. #define OBJ_BRUSH             2
  781.  
  782. /* Bitmap Header Definition */
  783. typedef struct tagBITMAP
  784.   {
  785.     int     bmType;
  786.     int     bmWidth;
  787.     int     bmHeight;
  788.     int     bmWidthBytes;
  789.     BYTE    bmPlanes;
  790.     BYTE    bmBitsPixel;
  791.     LPSTR    bmBits;
  792.   } BITMAP;
  793. typedef BITMAP            *PBITMAP;
  794. typedef BITMAP NEAR        *NPBITMAP;
  795. typedef BITMAP FAR        *LPBITMAP;
  796.  
  797. typedef struct tagRGBTRIPLE {
  798.     BYTE    rgbtBlue;
  799.     BYTE    rgbtGreen;
  800.     BYTE    rgbtRed;
  801. } RGBTRIPLE;
  802.  
  803. typedef struct tagRGBQUAD {
  804.     BYTE    rgbBlue;
  805.     BYTE    rgbGreen;
  806.     BYTE    rgbRed;
  807.     BYTE    rgbReserved;
  808. } RGBQUAD;
  809.  
  810. /* structures for defining DIBs */
  811. typedef struct tagBITMAPCOREHEADER {
  812.     DWORD    bcSize;            /* used to get to color table */
  813.     WORD    bcWidth;
  814.     WORD    bcHeight;
  815.     WORD    bcPlanes;
  816.     WORD    bcBitCount;
  817. } BITMAPCOREHEADER;
  818. typedef BITMAPCOREHEADER FAR *LPBITMAPCOREHEADER;
  819. typedef BITMAPCOREHEADER *PBITMAPCOREHEADER;
  820.  
  821.  
  822. typedef struct tagBITMAPINFOHEADER{
  823.       DWORD       biSize;
  824.       DWORD       biWidth;
  825.       DWORD       biHeight;
  826.       WORD       biPlanes;
  827.       WORD       biBitCount;
  828.  
  829.     DWORD       biCompression;
  830.     DWORD       biSizeImage;
  831.     DWORD       biXPelsPerMeter;
  832.     DWORD       biYPelsPerMeter;
  833.     DWORD       biClrUsed;
  834.     DWORD       biClrImportant;
  835. } BITMAPINFOHEADER;
  836.  
  837. typedef BITMAPINFOHEADER FAR *LPBITMAPINFOHEADER;
  838. typedef BITMAPINFOHEADER *PBITMAPINFOHEADER;
  839.  
  840. /* constants for the biCompression field */
  841. #define BI_RGB      0L
  842. #define BI_RLE8     1L
  843. #define BI_RLE4     2L
  844.  
  845. typedef struct tagBITMAPINFO { 
  846.     BITMAPINFOHEADER    bmiHeader;
  847.     RGBQUAD        bmiColors[1];
  848. } BITMAPINFO;
  849. typedef BITMAPINFO FAR *LPBITMAPINFO;
  850. typedef BITMAPINFO *PBITMAPINFO;
  851.  
  852. typedef struct tagBITMAPCOREINFO { 
  853.     BITMAPCOREHEADER    bmciHeader;
  854.     RGBTRIPLE        bmciColors[1];
  855. } BITMAPCOREINFO;
  856. typedef BITMAPCOREINFO FAR *LPBITMAPCOREINFO;
  857. typedef BITMAPCOREINFO *PBITMAPCOREINFO;
  858.  
  859. typedef struct tagBITMAPFILEHEADER {
  860.     WORD    bfType;
  861.     DWORD    bfSize;
  862.         WORD    bfReserved1;
  863.         WORD    bfReserved2;
  864.     DWORD    bfOffBits;
  865. } BITMAPFILEHEADER;
  866. typedef BITMAPFILEHEADER FAR *LPBITMAPFILEHEADER;
  867. typedef BITMAPFILEHEADER *PBITMAPFILEHEADER;
  868.  
  869.  
  870. #define MAKEPOINT(l)        (*((POINT FAR *)&(l)))
  871.  
  872. #ifndef NOMETAFILE
  873.  
  874. /* Clipboard Metafile Picture Structure */
  875. typedef struct tagHANDLETABLE
  876.   {
  877.     HANDLE    objectHandle[1];
  878.   } HANDLETABLE;
  879. typedef HANDLETABLE        *PHANDLETABLE;
  880. typedef HANDLETABLE FAR     *LPHANDLETABLE;
  881.  
  882. typedef struct tagMETARECORD
  883.   {
  884.     DWORD    rdSize;
  885.     WORD    rdFunction;
  886.     WORD    rdParm[1];
  887.   } METARECORD;
  888. typedef METARECORD        *PMETARECORD;
  889. typedef METARECORD FAR        *LPMETARECORD;
  890.  
  891. typedef struct tagMETAFILEPICT
  892.   {
  893.     int     mm;
  894.     int     xExt;
  895.     int     yExt;
  896.     HANDLE    hMF;
  897.   } METAFILEPICT;
  898. typedef METAFILEPICT FAR    *LPMETAFILEPICT;
  899.  
  900. typedef struct tagMETAHEADER
  901. {
  902.     WORD    mtType;
  903.     WORD    mtHeaderSize;
  904.     WORD    mtVersion;
  905.     DWORD    mtSize;
  906.     WORD    mtNoObjects;
  907.     DWORD    mtMaxRecord;
  908.     WORD    mtNoParameters;
  909. } METAHEADER;
  910.  
  911. #endif /* NOMETAFILE */
  912.  
  913. #ifndef NOTEXTMETRIC
  914.  
  915. typedef struct tagTEXTMETRIC
  916.   {
  917.     int     tmHeight;
  918.     int     tmAscent;
  919.     int     tmDescent;
  920.     int     tmInternalLeading;
  921.     int     tmExternalLeading;
  922.     int     tmAveCharWidth;
  923.     int     tmMaxCharWidth;
  924.     int     tmWeight;
  925.     BYTE    tmItalic;
  926.     BYTE    tmUnderlined;
  927.     BYTE    tmStruckOut;
  928.     BYTE    tmFirstChar;
  929.     BYTE    tmLastChar;
  930.     BYTE    tmDefaultChar;
  931.     BYTE    tmBreakChar;
  932.     BYTE    tmPitchAndFamily;
  933.     BYTE    tmCharSet;
  934.     int     tmOverhang;
  935.     int     tmDigitizedAspectX;
  936.     int     tmDigitizedAspectY;
  937.   } TEXTMETRIC;
  938. typedef TEXTMETRIC        *PTEXTMETRIC;
  939. typedef TEXTMETRIC NEAR     *NPTEXTMETRIC;
  940. typedef TEXTMETRIC FAR        *LPTEXTMETRIC;
  941.  
  942. #endif /* NOTEXTMETRIC */
  943.  
  944. /* GDI Logical Objects: */
  945.  
  946. /* Pel Array */
  947. typedef struct tagPELARRAY
  948.   {
  949.     int     paXCount;
  950.     int     paYCount;
  951.     int     paXExt;
  952.     int     paYExt;
  953.     BYTE    paRGBs;
  954.   } PELARRAY;
  955. typedef PELARRAY        *PPELARRAY;
  956. typedef PELARRAY NEAR        *NPPELARRAY;
  957. typedef PELARRAY FAR        *LPPELARRAY;
  958.  
  959. /* Logical Brush (or Pattern) */
  960. typedef struct tagLOGBRUSH
  961.   {
  962.     WORD    lbStyle;
  963.     DWORD    lbColor;
  964.     int       lbHatch;
  965.   } LOGBRUSH;
  966. typedef LOGBRUSH        *PLOGBRUSH;
  967. typedef LOGBRUSH NEAR        *NPLOGBRUSH;
  968. typedef LOGBRUSH FAR        *LPLOGBRUSH;
  969.  
  970. typedef LOGBRUSH        PATTERN;
  971. typedef PATTERN         *PPATTERN;
  972. typedef PATTERN NEAR        *NPPATTERN;
  973. typedef PATTERN FAR        *LPPATTERN;
  974.  
  975. /* Logical Pen */
  976. typedef struct tagLOGPEN
  977.   {
  978.     WORD    lopnStyle;
  979.     POINT    lopnWidth;
  980.     DWORD    lopnColor;
  981.   } LOGPEN;
  982. typedef LOGPEN            *PLOGPEN;
  983. typedef LOGPEN NEAR        *NPLOGPEN;
  984. typedef LOGPEN FAR        *LPLOGPEN;
  985.  
  986.  
  987.  
  988. typedef struct tagPALETTEENTRY {
  989.     BYTE    peRed;
  990.     BYTE    peGreen;
  991.     BYTE    peBlue;
  992.     BYTE    peFlags;
  993. } PALETTEENTRY;
  994. typedef PALETTEENTRY FAR  *LPPALETTEENTRY;
  995.  
  996. /* Logical Palette */
  997. typedef struct tagLOGPALETTE {
  998.     WORD    palVersion;
  999.     WORD    palNumEntries;
  1000.     PALETTEENTRY    palPalEntry[1];
  1001. } LOGPALETTE;
  1002. typedef LOGPALETTE        *PLOGPALETTE;
  1003. typedef LOGPALETTE NEAR        *NPLOGPALETTE;
  1004. typedef LOGPALETTE FAR        *LPLOGPALETTE;
  1005.  
  1006.  
  1007. /* Logical Font */
  1008. #define LF_FACESIZE        32
  1009.  
  1010. typedef struct tagLOGFONT
  1011.   {
  1012.     int       lfHeight;
  1013.     int       lfWidth;
  1014.     int       lfEscapement;
  1015.     int       lfOrientation;
  1016.     int       lfWeight;
  1017.     BYTE      lfItalic;
  1018.     BYTE      lfUnderline;
  1019.     BYTE      lfStrikeOut;
  1020.     BYTE      lfCharSet;
  1021.     BYTE      lfOutPrecision;
  1022.     BYTE      lfClipPrecision;
  1023.     BYTE      lfQuality;
  1024.     BYTE      lfPitchAndFamily;
  1025.     BYTE      lfFaceName[LF_FACESIZE];
  1026.   } LOGFONT;
  1027. typedef LOGFONT         *PLOGFONT;
  1028. typedef LOGFONT NEAR        *NPLOGFONT;
  1029. typedef LOGFONT FAR        *LPLOGFONT;
  1030.  
  1031. #define OUT_DEFAULT_PRECIS    0
  1032. #define OUT_STRING_PRECIS    1
  1033. #define OUT_CHARACTER_PRECIS    2
  1034. #define OUT_STROKE_PRECIS    3
  1035.  
  1036. #define CLIP_DEFAULT_PRECIS    0
  1037. #define CLIP_CHARACTER_PRECIS    1
  1038. #define CLIP_STROKE_PRECIS    2
  1039.  
  1040. #define DEFAULT_QUALITY     0
  1041. #define DRAFT_QUALITY        1
  1042. #define PROOF_QUALITY        2
  1043.  
  1044. #define DEFAULT_PITCH        0
  1045. #define FIXED_PITCH        1
  1046. #define VARIABLE_PITCH        2
  1047.  
  1048. #define ANSI_CHARSET        0
  1049. #define SYMBOL_CHARSET        2
  1050. #define SHIFTJIS_CHARSET    128
  1051. #define OEM_CHARSET        255
  1052.  
  1053. /* Font Families */
  1054. #define FF_DONTCARE        (0<<4)  /* Don't care or don't know. */
  1055. #define FF_ROMAN        (1<<4)  /* Variable stroke width, serifed. */
  1056.                     /* Times Roman, Century Schoolbook, etc. */
  1057. #define FF_SWISS        (2<<4)  /* Variable stroke width, sans-serifed. */
  1058.                     /* Helvetica, Swiss, etc. */
  1059. #define FF_MODERN        (3<<4)  /* Constant stroke width, serifed or sans-serifed. */
  1060.                     /* Pica, Elite, Courier, etc. */
  1061. #define FF_SCRIPT        (4<<4)  /* Cursive, etc. */
  1062. #define FF_DECORATIVE        (5<<4)  /* Old English, etc. */
  1063.  
  1064. /* Font Weights */
  1065. #define FW_DONTCARE        0
  1066. #define FW_THIN         100
  1067. #define FW_EXTRALIGHT        200
  1068. #define FW_LIGHT        300
  1069. #define FW_NORMAL        400
  1070. #define FW_MEDIUM        500
  1071. #define FW_SEMIBOLD        600
  1072. #define FW_BOLD         700
  1073. #define FW_EXTRABOLD        800
  1074. #define FW_HEAVY        900
  1075.  
  1076. #define FW_ULTRALIGHT        FW_EXTRALIGHT
  1077. #define FW_REGULAR        FW_NORMAL
  1078. #define FW_DEMIBOLD        FW_SEMIBOLD
  1079. #define FW_ULTRABOLD        FW_EXTRABOLD
  1080. #define FW_BLACK        FW_HEAVY
  1081.  
  1082. /* EnumFonts Masks */
  1083. #define RASTER_FONTTYPE     0x0001
  1084. #define DEVICE_FONTTYPE     0X0002
  1085.  
  1086. #define RGB(r,g,b)          ((DWORD)(((BYTE)(r)|((WORD)(g)<<8))|(((DWORD)(BYTE)(b))<<16)))
  1087. #define PALETTERGB(r,g,b)   (0x02000000 | RGB(r,g,b))
  1088. #define PALETTEINDEX(i)     ((DWORD)(0x01000000 | (WORD)(i)))
  1089.  
  1090. #define GetRValue(rgb)        ((BYTE)(rgb))
  1091. #define GetGValue(rgb)        ((BYTE)(((WORD)(rgb)) >> 8))
  1092. #define GetBValue(rgb)        ((BYTE)((rgb)>>16))
  1093.  
  1094. /* Background Modes */
  1095. #define TRANSPARENT        1
  1096. #define OPAQUE            2
  1097.  
  1098. /* Mapping Modes */
  1099. #define MM_TEXT            1
  1100. #define MM_LOMETRIC        2
  1101. #define MM_HIMETRIC        3
  1102. #define MM_LOENGLISH        4
  1103. #define MM_HIENGLISH        5
  1104. #define MM_TWIPS        6
  1105. #define MM_ISOTROPIC        7
  1106. #define MM_ANISOTROPIC        8
  1107.  
  1108. /* Coordinate Modes */
  1109. #define ABSOLUTE        1
  1110. #define RELATIVE        2
  1111.  
  1112. /* Stock Logical Objects */
  1113. #define WHITE_BRUSH        0
  1114. #define LTGRAY_BRUSH        1
  1115. #define GRAY_BRUSH        2
  1116. #define DKGRAY_BRUSH        3
  1117. #define BLACK_BRUSH        4
  1118. #define NULL_BRUSH        5
  1119. #define HOLLOW_BRUSH        NULL_BRUSH
  1120. #define WHITE_PEN        6
  1121. #define BLACK_PEN        7
  1122. #define NULL_PEN        8
  1123. #define OEM_FIXED_FONT        10
  1124. #define ANSI_FIXED_FONT     11
  1125. #define ANSI_VAR_FONT        12
  1126. #define SYSTEM_FONT        13
  1127. #define DEVICE_DEFAULT_FONT 14
  1128. #define DEFAULT_PALETTE     15
  1129. #define SYSTEM_FIXED_FONT   16
  1130.  
  1131. /* Brush Styles */
  1132. #define BS_SOLID        0
  1133. #define BS_NULL            1
  1134. #define BS_HOLLOW        BS_NULL
  1135. #define BS_HATCHED        2
  1136. #define BS_PATTERN        3
  1137. #define BS_INDEXED        4
  1138. #define    BS_DIBPATTERN        5
  1139.  
  1140. /* Hatch Styles */
  1141. #define HS_HORIZONTAL        0        /* ----- */
  1142. #define HS_VERTICAL        1        /* ||||| */
  1143. #define HS_FDIAGONAL        2        /* \\\\\ */
  1144. #define HS_BDIAGONAL        3        /* ///// */
  1145. #define HS_CROSS        4        /* +++++ */
  1146. #define HS_DIAGCROSS        5        /* xxxxx */
  1147.  
  1148. /* Pen Styles */
  1149. #define PS_SOLID        0
  1150. #define PS_DASH            1        /* -------    */
  1151. #define PS_DOT            2        /* .......    */
  1152. #define PS_DASHDOT        3        /* _._._._    */
  1153. #define PS_DASHDOTDOT        4        /* _.._.._    */
  1154. #define PS_NULL         5
  1155. #define PS_INSIDEFRAME         6
  1156.  
  1157. /* Device Parameters for GetDeviceCaps() */
  1158. #define DRIVERVERSION 0     /* Device driver version            */
  1159. #define TECHNOLOGY    2     /* Device classification            */
  1160. #define HORZSIZE      4     /* Horizontal size in millimeters        */
  1161. #define VERTSIZE      6     /* Vertical size in millimeters        */
  1162. #define HORZRES       8     /* Horizontal width in pixels        */
  1163. #define VERTRES       10    /* Vertical width in pixels         */
  1164. #define BITSPIXEL     12    /* Number of bits per pixel         */
  1165. #define PLANES          14    /* Number of planes             */
  1166. #define NUMBRUSHES    16    /* Number of brushes the device has     */
  1167. #define NUMPENS       18    /* Number of pens the device has        */
  1168. #define NUMMARKERS    20    /* Number of markers the device has     */
  1169. #define NUMFONTS      22    /* Number of fonts the device has        */
  1170. #define NUMCOLORS     24    /* Number of colors the device supports    */
  1171. #define PDEVICESIZE   26    /* Size required for device descriptor    */
  1172. #define CURVECAPS     28    /* Curve capabilities            */
  1173. #define LINECAPS      30    /* Line capabilities            */
  1174. #define POLYGONALCAPS 32    /* Polygonal capabilities            */
  1175. #define TEXTCAPS      34    /* Text capabilities            */
  1176. #define CLIPCAPS      36    /* Clipping capabilities            */
  1177. #define RASTERCAPS    38    /* Bitblt capabilities            */
  1178. #define ASPECTX       40    /* Length of the X leg            */
  1179. #define ASPECTY       42    /* Length of the Y leg            */
  1180. #define ASPECTXY      44    /* Length of the hypotenuse         */
  1181.  
  1182. #define LOGPIXELSX    88    /* Logical pixels/inch in X         */
  1183. #define LOGPIXELSY    90    /* Logical pixels/inch in Y         */
  1184.  
  1185. #define SIZEPALETTE  104    /* Number of entries in physical palette    */
  1186. #define NUMRESERVED  106    /* Number of reserved entries in palette    */
  1187. #define COLORRES     108    /* Actual color resolution             */
  1188.  
  1189. #ifndef NOGDICAPMASKS
  1190.  
  1191. /* Device Capability Masks: */
  1192.  
  1193. /* Device Technologies */
  1194. #define DT_PLOTTER        0    /* Vector plotter            */
  1195. #define DT_RASDISPLAY        1    /* Raster display            */
  1196. #define DT_RASPRINTER        2    /* Raster printer            */
  1197. #define DT_RASCAMERA        3    /* Raster camera            */
  1198. #define DT_CHARSTREAM        4    /* Character-stream, PLP        */
  1199. #define DT_METAFILE        5    /* Metafile, VDM            */
  1200. #define DT_DISPFILE        6    /* Display-file             */
  1201.  
  1202. /* Curve Capabilities */
  1203. #define CC_NONE         0    /* Curves not supported         */
  1204. #define CC_CIRCLES        1    /* Can do circles            */
  1205. #define CC_PIE            2    /* Can do pie wedges            */
  1206. #define CC_CHORD        4    /* Can do chord arcs            */
  1207. #define CC_ELLIPSES        8    /* Can do ellipese            */
  1208. #define CC_WIDE         16    /* Can do wide lines            */
  1209. #define CC_STYLED        32    /* Can do styled lines            */
  1210. #define CC_WIDESTYLED        64    /* Can do wide styled lines        */
  1211. #define CC_INTERIORS        128 /* Can do interiors            */
  1212.  
  1213. /* Line Capabilities */
  1214. #define LC_NONE         0    /* Lines not supported            */
  1215. #define LC_POLYLINE        2    /* Can do polylines            */
  1216. #define LC_MARKER        4    /* Can do markers            */
  1217. #define LC_POLYMARKER        8    /* Can do polymarkers            */
  1218. #define LC_WIDE         16    /* Can do wide lines            */
  1219. #define LC_STYLED        32    /* Can do styled lines            */
  1220. #define LC_WIDESTYLED        64    /* Can do wide styled lines        */
  1221. #define LC_INTERIORS        128 /* Can do interiors            */
  1222.  
  1223. /* Polygonal Capabilities */
  1224. #define PC_NONE         0    /* Polygonals not supported        */
  1225. #define PC_POLYGON        1    /* Can do polygons            */
  1226. #define PC_RECTANGLE        2    /* Can do rectangles            */
  1227. #define PC_WINDPOLYGON        4    /* Can do winding polygons        */
  1228. #define PC_TRAPEZOID        4    /* Can do trapezoids            */
  1229. #define PC_SCANLINE        8    /* Can do scanlines            */
  1230. #define PC_WIDE         16    /* Can do wide borders            */
  1231. #define PC_STYLED        32    /* Can do styled borders        */
  1232. #define PC_WIDESTYLED        64    /* Can do wide styled borders        */
  1233. #define PC_INTERIORS        128 /* Can do interiors            */
  1234.  
  1235. /* Polygonal Capabilities */
  1236. #define CP_NONE         0    /* No clipping of output        */
  1237. #define CP_RECTANGLE        1    /* Output clipped to rects        */
  1238.  
  1239. /* Text Capabilities */
  1240. #define TC_OP_CHARACTER     0x0001  /* Can do OutputPrecision    CHARACTER      */
  1241. #define TC_OP_STROKE        0x0002  /* Can do OutputPrecision    STROKE           */
  1242. #define TC_CP_STROKE        0x0004  /* Can do ClipPrecision    STROKE           */
  1243. #define TC_CR_90        0x0008  /* Can do CharRotAbility    90           */
  1244. #define TC_CR_ANY        0x0010  /* Can do CharRotAbility    ANY           */
  1245. #define TC_SF_X_YINDEP        0x0020  /* Can do ScaleFreedom    X_YINDEPENDENT */
  1246. #define TC_SA_DOUBLE        0x0040  /* Can do ScaleAbility    DOUBLE           */
  1247. #define TC_SA_INTEGER        0x0080  /* Can do ScaleAbility    INTEGER        */
  1248. #define TC_SA_CONTIN        0x0100  /* Can do ScaleAbility    CONTINUOUS     */
  1249. #define TC_EA_DOUBLE        0x0200  /* Can do EmboldenAbility    DOUBLE           */
  1250. #define TC_IA_ABLE        0x0400  /* Can do ItalisizeAbility    ABLE           */
  1251. #define TC_UA_ABLE        0x0800  /* Can do UnderlineAbility    ABLE           */
  1252. #define TC_SO_ABLE        0x1000  /* Can do StrikeOutAbility    ABLE           */
  1253. #define TC_RA_ABLE        0x2000  /* Can do RasterFontAble    ABLE           */
  1254. #define TC_VA_ABLE        0x4000  /* Can do VectorFontAble    ABLE           */
  1255. #define TC_RESERVED        0x8000
  1256.  
  1257. #endif /* NOGDICAPMASKS */
  1258.  
  1259. /* Raster Capabilities */
  1260. #define RC_BITBLT        1        /* Can do standard BLT.        */
  1261. #define RC_BANDING        2        /* Device requires banding support    */
  1262. #define RC_SCALING        4        /* Device requires scaling support    */
  1263. #define RC_BITMAP64        8        /* Device can support >64K bitmap    */
  1264. #define    RC_GDI20_OUTPUT        0x0010    /* has 2.0 output calls         */
  1265. #define    RC_DI_BITMAP        0x0080    /* supports DIB to memory    */
  1266. #define    RC_PALETTE        0x0100    /* supports a palette        */
  1267. #define    RC_DIBTODEV        0x0200    /* supports DIBitsToDevice    */
  1268. #define    RC_BIGFONT        0x0400    /* supports >64K fonts        */
  1269. #define    RC_STRETCHBLT        0x0800    /* supports StretchBlt        */
  1270. #define    RC_FLOODFILL        0x1000    /* supports FloodFill        */
  1271. #define    RC_STRETCHDIB        0x2000    /* supports StretchDIBits    */
  1272.  
  1273.  
  1274. /* palette entry flags */
  1275.  
  1276. #define PC_RESERVED    0x01    /* palette index used for animation */
  1277. #define PC_EXPLICIT    0x02    /* palette index is explicit to device */
  1278. #define    PC_NOCOLLAPSE    0x04    /* do not match color to system palette */
  1279.  
  1280. /* DIB color table identifiers */
  1281.  
  1282. #define    DIB_RGB_COLORS    0    /* color table in RGBTriples */
  1283. #define    DIB_PAL_COLORS    1    /* color table in palette indices */
  1284.  
  1285. /* constants for Get/SetSystemPaletteUse() */
  1286.  
  1287. #define    SYSPAL_STATIC    1
  1288. #define    SYSPAL_NOSTATIC 2
  1289.  
  1290. /* constants for CreateDIBitmap */
  1291. #define    CBM_INIT    0x04L    /* initialize bitmap */
  1292.  
  1293. #ifndef NODRAWTEXT
  1294.  
  1295. /* DrawText() Format Flags */
  1296. #define DT_TOP            0x0000
  1297. #define DT_LEFT         0x0000
  1298. #define DT_CENTER        0x0001
  1299. #define DT_RIGHT        0x0002
  1300. #define DT_VCENTER        0x0004
  1301. #define DT_BOTTOM        0x0008
  1302. #define DT_WORDBREAK        0x0010
  1303. #define DT_SINGLELINE        0x0020
  1304. #define DT_EXPANDTABS        0x0040
  1305. #define DT_TABSTOP        0x0080
  1306. #define DT_NOCLIP        0x0100
  1307. #define DT_EXTERNALLEADING  0x0200
  1308. #define DT_CALCRECT        0x0400
  1309. #define DT_NOPREFIX        0x0800
  1310. #define DT_INTERNAL        0x1000
  1311.  
  1312. int  FAR PASCAL DrawText(HDC, LPSTR, int, LPRECT, WORD);
  1313. BOOL FAR PASCAL DrawIcon(HDC, int, int, HICON);
  1314.  
  1315. #endif /* NODRAWTEXT */
  1316.  
  1317. /* ExtFloodFill style flags */
  1318. #define  FLOODFILLBORDER   0
  1319. #define  FLOODFILLSURFACE  1
  1320.  
  1321. HDC   FAR PASCAL GetWindowDC(HWND);
  1322. HDC   FAR PASCAL GetDC(HWND);
  1323. int   FAR PASCAL ReleaseDC(HWND, HDC);
  1324. HDC   FAR PASCAL CreateDC(LPSTR, LPSTR, LPSTR, LPSTR);
  1325. HDC   FAR PASCAL CreateIC(LPSTR, LPSTR, LPSTR, LPSTR);
  1326. HDC   FAR PASCAL CreateCompatibleDC(HDC);
  1327. BOOL  FAR PASCAL DeleteDC(HDC);
  1328. int   FAR PASCAL SaveDC(HDC);
  1329. BOOL  FAR PASCAL RestoreDC(HDC, int);
  1330. DWORD FAR PASCAL MoveTo(HDC, int, int);
  1331. DWORD FAR PASCAL GetCurrentPosition(HDC);
  1332. BOOL  FAR PASCAL LineTo(HDC, int, int);
  1333. DWORD FAR PASCAL GetDCOrg(HDC);
  1334.  
  1335. int   FAR PASCAL MulDiv(int, int, int);
  1336.  
  1337. BOOL FAR PASCAL ExtTextOut(HDC, int, int, WORD, LPRECT, LPSTR, WORD, LPINT);
  1338.  
  1339. BOOL FAR PASCAL Polyline(HDC, LPPOINT, int);
  1340. BOOL FAR PASCAL Polygon(HDC, LPPOINT, int);
  1341. BOOL FAR PASCAL PolyPolygon(HDC, LPPOINT, LPINT, int);
  1342.  
  1343. BOOL  FAR PASCAL Rectangle(HDC, int, int, int, int);
  1344. BOOL  FAR PASCAL RoundRect(HDC, int, int, int, int, int, int);
  1345. BOOL  FAR PASCAL Ellipse(HDC, int, int, int, int);
  1346. BOOL  FAR PASCAL Arc(HDC, int, int, int, int, int, int, int, int);
  1347. BOOL  FAR PASCAL Chord(HDC, int, int, int, int, int, int, int, int);
  1348. BOOL  FAR PASCAL Pie(HDC, int, int, int, int, int, int, int, int);
  1349. BOOL  FAR PASCAL PatBlt(HDC, int, int, int, int, DWORD);
  1350. BOOL  FAR PASCAL BitBlt(HDC, int, int, int, int, HDC, int, int, DWORD);
  1351. BOOL  FAR PASCAL StretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD);
  1352. BOOL  FAR PASCAL TextOut(HDC, int, int, LPSTR, int);
  1353. LONG  FAR PASCAL TabbedTextOut(HDC, int, int, LPSTR, int, int, LPINT, int);
  1354. BOOL  FAR PASCAL GetCharWidth(HDC, WORD, WORD, LPINT);
  1355. DWORD FAR PASCAL SetPixel( HDC, int, int, DWORD);
  1356. DWORD FAR PASCAL GetPixel( HDC, int, int);
  1357. BOOL  FAR PASCAL FloodFill( HDC, int, int, DWORD);
  1358. BOOL  FAR PASCAL ExtFloodFill(HDC, int, int, DWORD, WORD);
  1359. void  FAR PASCAL LineDDA(int, int, int, int, FARPROC, LPSTR);
  1360.  
  1361. HANDLE FAR PASCAL GetStockObject(int);
  1362.  
  1363. HPEN FAR PASCAL CreatePen(int, int, DWORD);
  1364. HPEN FAR PASCAL CreatePenIndirect(LOGPEN FAR *);
  1365.  
  1366. HBRUSH FAR PASCAL CreateSolidBrush(DWORD);
  1367. HBRUSH FAR PASCAL CreateHatchBrush(int,DWORD);
  1368. DWORD  FAR PASCAL SetBrushOrg(HDC, int, int);
  1369. DWORD  FAR PASCAL GetBrushOrg(HDC);
  1370. HBRUSH FAR PASCAL CreatePatternBrush(HBITMAP);
  1371. HBRUSH FAR PASCAL CreateBrushIndirect(LOGBRUSH FAR *);
  1372.  
  1373. HBITMAP FAR PASCAL CreateBitmap(int, int, BYTE, BYTE, LPSTR);
  1374. HBITMAP FAR PASCAL CreateBitmapIndirect(BITMAP FAR *);
  1375. HBITMAP FAR PASCAL CreateCompatibleBitmap(HDC, int, int);
  1376. HBITMAP FAR PASCAL CreateDiscardableBitmap(HDC, int, int);
  1377.  
  1378. LONG  FAR PASCAL SetBitmapBits(HBITMAP, DWORD, LPSTR);
  1379. LONG  FAR PASCAL GetBitmapBits(HBITMAP, LONG, LPSTR);
  1380. DWORD FAR PASCAL SetBitmapDimension(HBITMAP, int, int);
  1381. DWORD FAR PASCAL GetBitmapDimension(HBITMAP);
  1382.  
  1383. HFONT FAR PASCAL CreateFont(int, int, int, int, int, BYTE, BYTE, BYTE, BYTE, BYTE, BYTE, BYTE, BYTE, LPSTR);
  1384. HFONT FAR PASCAL CreateFontIndirect(LOGFONT FAR *);
  1385.  
  1386. int  FAR PASCAL SelectClipRgn(HDC, HRGN);
  1387. HRGN FAR PASCAL CreateRectRgn(int, int, int, int);
  1388. void FAR PASCAL SetRectRgn(HRGN, int, int, int, int);
  1389. HRGN FAR PASCAL CreateRectRgnIndirect(LPRECT);
  1390. HRGN FAR PASCAL CreateEllipticRgnIndirect(LPRECT);
  1391. HRGN FAR PASCAL CreateEllipticRgn(int, int, int, int);
  1392. HRGN FAR PASCAL CreatePolygonRgn(LPPOINT, int, int);
  1393. HRGN FAR PASCAL CreatePolyPolygonRgn(LPPOINT, LPINT, int, int);
  1394. HRGN FAR PASCAL CreateRoundRectRgn(int, int, int, int, int, int);
  1395.  
  1396. int    FAR PASCAL GetObject(HANDLE, int, LPSTR);
  1397. BOOL   FAR PASCAL DeleteObject(HANDLE);
  1398. HANDLE FAR PASCAL SelectObject(HDC, HANDLE);
  1399. BOOL   FAR PASCAL UnrealizeObject(HBRUSH);
  1400.  
  1401. DWORD FAR PASCAL SetBkColor(HDC, DWORD);
  1402. DWORD FAR PASCAL GetBkColor(HDC);
  1403. int   FAR PASCAL SetBkMode(HDC, int);
  1404. int   FAR PASCAL GetBkMode(HDC);
  1405. DWORD FAR PASCAL SetTextColor(HDC, DWORD);
  1406. DWORD FAR PASCAL GetTextColor(HDC);
  1407. WORD  FAR PASCAL SetTextAlign(HDC, WORD);
  1408. WORD  FAR PASCAL GetTextAlign(HDC);
  1409. DWORD FAR PASCAL SetMapperFlags(HDC, DWORD);
  1410. DWORD FAR PASCAL GetAspectRatioFilter(HDC);
  1411. DWORD FAR PASCAL GetNearestColor(HDC, DWORD);
  1412. int   FAR PASCAL SetROP2(HDC, int);
  1413. int   FAR PASCAL GetROP2(HDC);
  1414. int   FAR PASCAL SetStretchBltMode(HDC, int);
  1415. int   FAR PASCAL GetStretchBltMode(HDC);
  1416. int   FAR PASCAL SetPolyFillMode(HDC, int);
  1417. int   FAR PASCAL GetPolyFillMode(HDC);
  1418. int   FAR PASCAL SetMapMode(HDC, int);
  1419. int   FAR PASCAL GetMapMode(HDC);
  1420. DWORD FAR PASCAL SetWindowOrg(HDC, int, int);
  1421. DWORD FAR PASCAL GetWindowOrg(HDC);
  1422. DWORD FAR PASCAL SetWindowExt(HDC, int, int);
  1423. DWORD FAR PASCAL GetWindowExt(HDC);
  1424. DWORD FAR PASCAL SetViewportOrg(HDC, int, int);
  1425. DWORD FAR PASCAL GetViewportOrg(HDC);
  1426. DWORD FAR PASCAL SetViewportExt(HDC, int, int);
  1427. DWORD FAR PASCAL GetViewportExt(HDC);
  1428. DWORD FAR PASCAL OffsetViewportOrg(HDC, int, int);
  1429. DWORD FAR PASCAL ScaleViewportExt(HDC, int, int, int, int);
  1430. DWORD FAR PASCAL OffsetWindowOrg(HDC, int, int);
  1431. DWORD FAR PASCAL ScaleWindowExt(HDC, int, int, int, int);
  1432.  
  1433. int  FAR PASCAL GetClipBox(HDC, LPRECT);
  1434. int  FAR PASCAL IntersectClipRect(HDC, int, int, int, int);
  1435. int  FAR PASCAL OffsetClipRgn(HDC, int, int);
  1436. int  FAR PASCAL ExcludeClipRect(HDC, int, int, int, int);
  1437. BOOL FAR PASCAL PtVisible(HDC, int, int);
  1438. int  FAR PASCAL CombineRgn(HRGN, HRGN, HRGN, int);
  1439. BOOL FAR PASCAL EqualRgn(HRGN, HRGN);
  1440. int  FAR PASCAL OffsetRgn(HRGN, int, int);
  1441. int  FAR PASCAL GetRgnBox(HRGN, LPRECT);
  1442.  
  1443. int   FAR PASCAL SetTextJustification(HDC, int, int);
  1444. DWORD FAR PASCAL GetTextExtent(HDC, LPSTR, int);
  1445. DWORD FAR PASCAL GetTabbedTextExtent(HDC, LPSTR, int, int, LPINT);
  1446. int   FAR PASCAL SetTextCharacterExtra(HDC, int);
  1447. int   FAR PASCAL GetTextCharacterExtra(HDC);
  1448.  
  1449. HANDLE FAR PASCAL GetMetaFile(LPSTR);
  1450. BOOL   FAR PASCAL DeleteMetaFile(HANDLE);
  1451. HANDLE FAR PASCAL CopyMetaFile(HANDLE, LPSTR);
  1452.  
  1453. #ifndef NOMETAFILE
  1454. void FAR PASCAL PlayMetaFileRecord(HDC, LPHANDLETABLE, LPMETARECORD, WORD);
  1455. BOOL FAR PASCAL EnumMetaFile(HDC, LOCALHANDLE, FARPROC, BYTE FAR *);
  1456. #endif
  1457.  
  1458. BOOL FAR PASCAL PlayMetaFile(HDC, HANDLE);
  1459. int FAR PASCAL Escape(HDC, int, int, LPSTR, LPSTR);
  1460. int FAR PASCAL EnumFonts(HDC, LPSTR, FARPROC, LPSTR);
  1461. int FAR PASCAL EnumObjects(HDC, int, FARPROC, LPSTR);
  1462. int FAR PASCAL GetTextFace(HDC, int, LPSTR);
  1463.  
  1464. #ifndef NOTEXTMETRIC
  1465. BOOL FAR PASCAL GetTextMetrics(HDC, LPTEXTMETRIC );
  1466. #endif
  1467.  
  1468. int FAR PASCAL GetDeviceCaps(HDC, int);
  1469.  
  1470. int FAR PASCAL SetEnvironment(LPSTR, LPSTR, WORD);
  1471. int FAR PASCAL GetEnvironment(LPSTR, LPSTR, WORD);
  1472.  
  1473. BOOL FAR PASCAL DPtoLP(HDC, LPPOINT, int);
  1474. BOOL FAR PASCAL LPtoDP(HDC, LPPOINT, int);
  1475.  
  1476. HANDLE FAR PASCAL CreateMetaFile(LPSTR);
  1477. HANDLE FAR PASCAL CloseMetaFile(HANDLE);
  1478. HANDLE FAR PASCAL GetMetaFileBits(HANDLE);
  1479. HANDLE FAR PASCAL SetMetaFileBits(HANDLE);
  1480.  
  1481. int FAR PASCAL SetDIBits(HDC,HANDLE,WORD,WORD,LPSTR,LPBITMAPINFO,WORD);
  1482. int FAR PASCAL GetDIBits(HDC,HANDLE,WORD,WORD,LPSTR,LPBITMAPINFO,WORD);
  1483. int FAR PASCAL SetDIBitsToDevice(HDC,WORD,WORD,WORD,WORD,
  1484.                     WORD,WORD,WORD,WORD,
  1485.                     LPSTR,LPBITMAPINFO,WORD);
  1486. HBITMAP FAR PASCAL CreateDIBitmap(HDC,LPBITMAPINFOHEADER,DWORD,LPSTR,
  1487.                         LPBITMAPINFO,WORD);
  1488. HBRUSH FAR PASCAL CreateDIBPatternBrush(HANDLE,WORD);
  1489. int FAR PASCAL StretchDIBits(HDC, WORD, WORD, WORD, WORD, WORD, 
  1490.             WORD, WORD, WORD, LPSTR, LPBITMAPINFO, WORD, DWORD);
  1491.  
  1492. HPALETTE FAR PASCAL CreatePalette (LPLOGPALETTE);
  1493. HPALETTE  FAR PASCAL SelectPalette (HDC,HPALETTE, BOOL) ;
  1494. WORD FAR PASCAL RealizePalette (HDC) ;
  1495. int  FAR PASCAL UpdateColors (HDC) ;
  1496. void FAR PASCAL AnimatePalette(HPALETTE, WORD, WORD, LPPALETTEENTRY);
  1497. WORD FAR PASCAL SetPaletteEntries(HPALETTE,WORD,WORD,LPPALETTEENTRY);
  1498. WORD FAR PASCAL GetPaletteEntries(HPALETTE,WORD,WORD,LPPALETTEENTRY);
  1499. WORD FAR PASCAL GetNearestPaletteIndex(HPALETTE, DWORD);
  1500. BOOL FAR PASCAL ResizePalette(HPALETTE, WORD);
  1501.  
  1502. WORD FAR PASCAL GetSystemPaletteEntries(HDC,WORD,WORD,LPPALETTEENTRY);
  1503. WORD FAR PASCAL GetSystemPaletteUse(HDC, WORD);
  1504. WORD FAR PASCAL SetSystemPaletteUse(HDC, WORD);
  1505. #endif /* NOGDI */
  1506.  
  1507.  
  1508. /*--------------------------------------------------------------------------*/
  1509. /*    USER Section                                */
  1510. /*--------------------------------------------------------------------------*/
  1511.  
  1512. #ifndef NOUSER
  1513.  
  1514. int FAR PASCAL wvsprintf(LPSTR,LPSTR,LPSTR);
  1515. int FAR cdecl wsprintf(LPSTR,LPSTR,...);
  1516.  
  1517. #ifndef NOSCROLL
  1518.  
  1519. /* Scroll Bar Constants */
  1520. #define SB_HORZ            0
  1521. #define SB_VERT            1
  1522. #define SB_CTL            2
  1523. #define SB_BOTH            3
  1524.  
  1525. /* Scroll Bar Commands */
  1526. #define SB_LINEUP        0
  1527. #define SB_LINEDOWN        1
  1528. #define SB_PAGEUP        2
  1529. #define SB_PAGEDOWN        3
  1530. #define SB_THUMBPOSITION    4
  1531. #define SB_THUMBTRACK        5
  1532. #define SB_TOP            6
  1533. #define SB_BOTTOM        7
  1534. #define SB_ENDSCROLL        8
  1535.  
  1536. #endif /* NOSCROLL */
  1537.  
  1538. #ifndef NOSHOWWINDOW
  1539.  
  1540. /* ShowWindow() Commands */
  1541. #define SW_HIDE            0
  1542. #define SW_SHOWNORMAL        1
  1543. #define SW_NORMAL        1
  1544. #define SW_SHOWMINIMIZED    2
  1545. #define SW_SHOWMAXIMIZED    3
  1546. #define SW_MAXIMIZE        3
  1547. #define SW_SHOWNOACTIVATE   4
  1548. #define SW_SHOW            5
  1549. #define SW_MINIMIZE        6
  1550. #define SW_SHOWMINNOACTIVE  7
  1551. #define SW_SHOWNA        8
  1552. #define SW_RESTORE          9
  1553.  
  1554. /* Old ShowWindow() Commands */
  1555. #define HIDE_WINDOW        0
  1556. #define SHOW_OPENWINDOW     1
  1557. #define SHOW_ICONWINDOW     2
  1558. #define SHOW_FULLSCREEN     3
  1559. #define SHOW_OPENNOACTIVATE 4
  1560.  
  1561. /* Identifiers for the WM_SHOWWINDOW message */
  1562. #define SW_PARENTCLOSING    1
  1563. #define SW_OTHERZOOM        2
  1564. #define SW_PARENTOPENING    3
  1565. #define SW_OTHERUNZOOM        4
  1566.  
  1567. #endif /* NOSHOWWINDOW */
  1568.  
  1569. /* Region Flags */
  1570. #define ERROR            0
  1571. #define NULLREGION        1
  1572. #define SIMPLEREGION        2
  1573. #define COMPLEXREGION        3
  1574.  
  1575. /* CombineRgn() Styles */
  1576. #define RGN_AND         1
  1577. #define RGN_OR            2
  1578. #define RGN_XOR         3
  1579. #define RGN_DIFF        4
  1580. #define RGN_COPY        5
  1581.  
  1582. #ifndef NOVIRTUALKEYCODES
  1583.  
  1584. /* Virtual Keys, Standard Set */
  1585. #define VK_LBUTTON        0x01
  1586. #define VK_RBUTTON        0x02
  1587. #define VK_CANCEL        0x03
  1588. #define VK_MBUTTON        0x04    /* NOT contiguous with L & RBUTTON */
  1589. #define VK_BACK         0x08
  1590. #define VK_TAB            0x09
  1591. #define VK_CLEAR        0x0C
  1592. #define VK_RETURN        0x0D
  1593. #define VK_SHIFT        0x10
  1594. #define VK_CONTROL        0x11
  1595. #define VK_MENU         0x12
  1596. #define VK_PAUSE        0x13
  1597. #define VK_CAPITAL        0x14
  1598. #define VK_ESCAPE        0x1B
  1599. #define VK_SPACE        0x20
  1600. #define VK_PRIOR        0x21
  1601. #define VK_NEXT         0x22
  1602. #define VK_END            0x23
  1603. #define VK_HOME         0x24
  1604. #define VK_LEFT         0x25
  1605. #define VK_UP            0x26
  1606. #define VK_RIGHT        0x27
  1607. #define VK_DOWN         0x28
  1608. #define VK_SELECT        0x29
  1609. #define VK_PRINT        0x2A
  1610. #define VK_EXECUTE        0x2B
  1611. #define VK_SNAPSHOT        0x2C
  1612. /* #define VK_COPY         0x2C not used by keyboards. */
  1613. #define VK_INSERT        0x2D
  1614. #define VK_DELETE        0x2E
  1615. #define VK_HELP         0x2F
  1616.  
  1617. /* VK_A thru VK_Z are the same as their ASCII equivalents: 'A' thru 'Z' */
  1618. /* VK_0 thru VK_9 are the same as their ASCII equivalents: '0' thru '0' */
  1619.  
  1620. #define VK_NUMPAD0        0x60
  1621. #define VK_NUMPAD1        0x61
  1622. #define VK_NUMPAD2        0x62
  1623. #define VK_NUMPAD3        0x63
  1624. #define VK_NUMPAD4        0x64
  1625. #define VK_NUMPAD5        0x65
  1626. #define VK_NUMPAD6        0x66
  1627. #define VK_NUMPAD7        0x67
  1628. #define VK_NUMPAD8        0x68
  1629. #define VK_NUMPAD9        0x69
  1630. #define VK_MULTIPLY        0x6A
  1631. #define VK_ADD            0x6B
  1632. #define VK_SEPARATOR        0x6C
  1633. #define VK_SUBTRACT        0x6D
  1634. #define VK_DECIMAL        0x6E
  1635. #define VK_DIVIDE        0x6F
  1636. #define VK_F1            0x70
  1637. #define VK_F2            0x71
  1638. #define VK_F3            0x72
  1639. #define VK_F4            0x73
  1640. #define VK_F5            0x74
  1641. #define VK_F6            0x75
  1642. #define VK_F7            0x76
  1643. #define VK_F8            0x77
  1644. #define VK_F9            0x78
  1645. #define VK_F10            0x79
  1646. #define VK_F11            0x7A
  1647. #define VK_F12            0x7B
  1648. #define VK_F13            0x7C
  1649. #define VK_F14            0x7D
  1650. #define VK_F15            0x7E
  1651. #define VK_F16            0x7F
  1652.  
  1653. #define VK_NUMLOCK        0x90
  1654.  
  1655. #endif /* NOVIRTUALKEYCODES */
  1656.  
  1657. #ifndef NOWH
  1658.  
  1659. /* SetWindowsHook() codes */
  1660. #define WH_MSGFILTER        (-1)
  1661. #define WH_JOURNALRECORD    0
  1662. #define WH_JOURNALPLAYBACK  1
  1663. #define WH_KEYBOARD        2
  1664. #define WH_GETMESSAGE        3
  1665. #define WH_CALLWNDPROC        4
  1666. #define WH_CBT            5
  1667. #define WH_SYSMSGFILTER        6
  1668. #define WH_WINDOWMGR        7
  1669.  
  1670. /* Hook Codes */
  1671. #define HC_LPLPFNNEXT        (-2)
  1672. #define HC_LPFNNEXT        (-1)
  1673. #define HC_ACTION        0
  1674. #define HC_GETNEXT        1
  1675. #define HC_SKIP         2
  1676. #define HC_NOREM        3
  1677. #define HC_NOREMOVE        3
  1678. #define HC_SYSMODALON       4
  1679. #define HC_SYSMODALOFF        5
  1680.  
  1681. /* CBT Hook Codes */
  1682. #define HCBT_MOVESIZE        0
  1683. #define HCBT_MINMAX        1
  1684. #define HCBT_QS         2
  1685.  
  1686. /* WH_MSGFILTER Filter Proc Codes */
  1687. #define MSGF_DIALOGBOX        0
  1688. #define MSGF_MESSAGEBOX        1
  1689. #define MSGF_MENU        2
  1690. #define MSGF_MOVE        3
  1691. #define MSGF_SIZE        4
  1692. #define MSGF_SCROLLBAR        5
  1693. #define MSGF_NEXTWINDOW        6
  1694.  
  1695. /* Window Manager Hook Codes */
  1696. #define WC_INIT            1
  1697. #define WC_SWP            2
  1698. #define WC_DEFWINDOWPROC    3
  1699. #define WC_MINMAX        4
  1700. #define WC_MOVE            5
  1701. #define WC_SIZE            6
  1702. #define WC_DRAWCAPTION        7
  1703.  
  1704. /* Message Structure used in Journaling */
  1705. typedef struct tagEVENTMSG
  1706.   {
  1707.     WORD    message;
  1708.     WORD    paramL;
  1709.     WORD    paramH;
  1710.     DWORD   time;
  1711.   } EVENTMSG;
  1712. typedef EVENTMSG        *PEVENTMSGMSG;
  1713. typedef EVENTMSG NEAR        *NPEVENTMSGMSG;
  1714. typedef EVENTMSG FAR        *LPEVENTMSGMSG;
  1715.  
  1716. #endif /* NOWH */
  1717.  
  1718. typedef struct tagWNDCLASS
  1719.   {
  1720.     WORD    style;
  1721.     LONG    (FAR PASCAL *lpfnWndProc)();
  1722.     int     cbClsExtra;
  1723.     int     cbWndExtra;
  1724.     HANDLE    hInstance;
  1725.     HICON    hIcon;
  1726.     HCURSOR    hCursor;
  1727.     HBRUSH    hbrBackground;
  1728.     LPSTR    lpszMenuName;
  1729.     LPSTR    lpszClassName;
  1730.   } WNDCLASS;
  1731. typedef WNDCLASS        *PWNDCLASS;
  1732. typedef WNDCLASS NEAR        *NPWNDCLASS;
  1733. typedef WNDCLASS FAR        *LPWNDCLASS;
  1734.  
  1735. #ifndef NOMSG
  1736.  
  1737. /* Message structure */
  1738. typedef struct tagMSG
  1739.   {
  1740.     HWND    hwnd;
  1741.     WORD    message;
  1742.     WORD    wParam;
  1743.     LONG    lParam;
  1744.     DWORD    time;
  1745.     POINT    pt;
  1746.   } MSG;
  1747. typedef MSG            *PMSG;
  1748. typedef MSG NEAR        *NPMSG;
  1749. typedef MSG FAR         *LPMSG;
  1750.  
  1751. #endif /* NOMSG */
  1752.  
  1753. #ifndef NOWINOFFSETS
  1754.  
  1755. /* Window field offsets for GetWindowLong() and GetWindowWord() */
  1756. #define GWL_WNDPROC        (-4)
  1757. #define GWW_HINSTANCE        (-6)
  1758. #define GWW_HWNDPARENT        (-8)
  1759. #define GWW_ID            (-12)
  1760. #define GWL_STYLE        (-16)
  1761. #define GWL_EXSTYLE        (-20)
  1762.  
  1763. /* Class field offsets for GetClassLong() and GetClassWord() */
  1764. #define GCL_MENUNAME        (-8)
  1765. #define GCW_HBRBACKGROUND   (-10)
  1766. #define GCW_HCURSOR        (-12)
  1767. #define GCW_HICON        (-14)
  1768. #define GCW_HMODULE        (-16)
  1769. #define GCW_CBWNDEXTRA        (-18)
  1770. #define GCW_CBCLSEXTRA        (-20)
  1771. #define GCL_WNDPROC        (-24)
  1772. #define GCW_STYLE        (-26)
  1773.  
  1774. #endif /* NOWINOFFSETS */
  1775.  
  1776. #ifndef NOWINMESSAGES
  1777.  
  1778. /* Window Messages */
  1779. #define WM_NULL            0x0000
  1780. #define WM_CREATE        0x0001
  1781. #define WM_DESTROY        0x0002
  1782. #define WM_MOVE            0x0003
  1783. #define WM_SIZE            0x0005
  1784. #define WM_ACTIVATE        0x0006
  1785. #define WM_SETFOCUS        0x0007
  1786. #define WM_KILLFOCUS        0x0008
  1787. #define WM_ENABLE        0x000A
  1788. #define WM_SETREDRAW        0x000B
  1789. #define WM_SETTEXT        0x000C
  1790. #define WM_GETTEXT        0x000D
  1791. #define WM_GETTEXTLENGTH    0x000E
  1792. #define WM_PAINT        0x000F
  1793. #define WM_CLOSE        0x0010
  1794. #define WM_QUERYENDSESSION  0x0011
  1795. #define WM_QUIT            0x0012
  1796. #define WM_QUERYOPEN        0x0013
  1797. #define WM_ERASEBKGND        0x0014
  1798. #define WM_SYSCOLORCHANGE   0x0015
  1799. #define WM_ENDSESSION        0x0016
  1800. #define WM_SHOWWINDOW        0x0018
  1801. #define WM_CTLCOLOR        0x0019
  1802. #define WM_WININICHANGE        0x001A
  1803. #define WM_DEVMODECHANGE    0x001B
  1804. #define WM_ACTIVATEAPP        0x001C
  1805. #define WM_FONTCHANGE        0x001D
  1806. #define WM_TIMECHANGE        0x001E
  1807. #define WM_CANCELMODE        0x001F
  1808. #define WM_SETCURSOR        0x0020
  1809. #define WM_MOUSEACTIVATE    0x0021
  1810. #define WM_CHILDACTIVATE    0x0022
  1811. #define WM_QUEUESYNC        0x0023
  1812. #define WM_GETMINMAXINFO    0x0024
  1813. #define WM_PAINTICON        0x0026
  1814. #define WM_ICONERASEBKGND   0x0027
  1815. #define WM_NEXTDLGCTL        0x0028
  1816. #define WM_SPOOLERSTATUS    0x002A
  1817. #define WM_DRAWITEM         0x002B
  1818. #define WM_MEASUREITEM      0x002C
  1819. #define WM_DELETEITEM       0x002D
  1820. #define WM_VKEYTOITEM       0x002E
  1821. #define WM_CHARTOITEM       0x002F
  1822. #define WM_SETFONT          0x0030
  1823. #define WM_GETFONT        0x0031
  1824.  
  1825.  
  1826. #define WM_QUERYDRAGICON    0x0037
  1827.  
  1828. #define WM_COMPAREITEM        0x0039
  1829. #define WM_COMPACTING       0x0041
  1830.  
  1831. #define WM_NCCREATE        0x0081
  1832. #define WM_NCDESTROY        0x0082
  1833. #define WM_NCCALCSIZE        0x0083
  1834. #define WM_NCHITTEST        0x0084
  1835. #define WM_NCPAINT        0x0085
  1836. #define WM_NCACTIVATE        0x0086
  1837. #define WM_GETDLGCODE        0x0087
  1838. #define WM_NCMOUSEMOVE        0x00A0
  1839. #define WM_NCLBUTTONDOWN    0x00A1
  1840. #define WM_NCLBUTTONUP        0x00A2
  1841. #define WM_NCLBUTTONDBLCLK  0x00A3
  1842. #define WM_NCRBUTTONDOWN    0x00A4
  1843. #define WM_NCRBUTTONUP        0x00A5
  1844. #define WM_NCRBUTTONDBLCLK  0x00A6
  1845. #define WM_NCMBUTTONDOWN    0x00A7
  1846. #define WM_NCMBUTTONUP        0x00A8
  1847. #define WM_NCMBUTTONDBLCLK  0x00A9
  1848.  
  1849. #define WM_KEYFIRST        0x0100
  1850. #define WM_KEYDOWN        0x0100
  1851. #define WM_KEYUP        0x0101
  1852. #define WM_CHAR            0x0102
  1853. #define WM_DEADCHAR        0x0103
  1854. #define WM_SYSKEYDOWN        0x0104
  1855. #define WM_SYSKEYUP        0x0105
  1856. #define WM_SYSCHAR        0x0106
  1857. #define WM_SYSDEADCHAR        0x0107
  1858. #define WM_KEYLAST        0x0108
  1859.  
  1860. #define WM_INITDIALOG        0x0110
  1861. #define WM_COMMAND        0x0111
  1862. #define WM_SYSCOMMAND        0x0112
  1863. #define WM_TIMER        0x0113
  1864. #define WM_HSCROLL        0x0114
  1865. #define WM_VSCROLL        0x0115
  1866. #define WM_INITMENU        0x0116
  1867. #define WM_INITMENUPOPUP    0x0117
  1868. #define WM_MENUSELECT        0x011F
  1869. #define WM_MENUCHAR        0x0120
  1870. #define WM_ENTERIDLE        0x0121
  1871.  
  1872.  
  1873. #define WM_MOUSEFIRST        0x0200
  1874. #define WM_MOUSEMOVE        0x0200
  1875. #define WM_LBUTTONDOWN        0x0201
  1876. #define WM_LBUTTONUP        0x0202
  1877. #define WM_LBUTTONDBLCLK    0x0203
  1878. #define WM_RBUTTONDOWN        0x0204
  1879. #define WM_RBUTTONUP        0x0205
  1880. #define WM_RBUTTONDBLCLK    0x0206
  1881. #define WM_MBUTTONDOWN        0x0207
  1882. #define WM_MBUTTONUP        0x0208
  1883. #define WM_MBUTTONDBLCLK    0x0209
  1884. #define WM_MOUSELAST        0x0209
  1885.  
  1886. #define WM_PARENTNOTIFY     0x0210
  1887. #define WM_MDICREATE        0x0220
  1888. #define WM_MDIDESTROY        0x0221
  1889. #define WM_MDIACTIVATE        0x0222
  1890. #define WM_MDIRESTORE        0x0223
  1891. #define WM_MDINEXT        0x0224
  1892. #define WM_MDIMAXIMIZE        0x0225
  1893. #define WM_MDITILE        0x0226
  1894. #define WM_MDICASCADE        0x0227
  1895. #define WM_MDIICONARRANGE   0x0228
  1896. #define WM_MDIGETACTIVE     0x0229
  1897. #define WM_MDISETMENU        0x0230
  1898.  
  1899.  
  1900. #define WM_CUT            0x0300
  1901. #define WM_COPY            0x0301
  1902. #define WM_PASTE        0x0302
  1903. #define WM_CLEAR        0x0303
  1904. #define WM_UNDO            0x0304
  1905. #define WM_RENDERFORMAT        0x0305
  1906. #define WM_RENDERALLFORMATS 0x0306
  1907. #define WM_DESTROYCLIPBOARD 0x0307
  1908. #define WM_DRAWCLIPBOARD    0x0308
  1909. #define WM_PAINTCLIPBOARD   0x0309
  1910. #define WM_VSCROLLCLIPBOARD 0x030A
  1911. #define WM_SIZECLIPBOARD    0x030B
  1912. #define WM_ASKCBFORMATNAME  0x030C
  1913. #define WM_CHANGECBCHAIN    0x030D
  1914. #define WM_HSCROLLCLIPBOARD 0x030E
  1915. #define WM_QUERYNEWPALETTE  0x030F
  1916. #define WM_PALETTEISCHANGING 0x0310
  1917. #define WM_PALETTECHANGED   0x0311
  1918.  
  1919.  
  1920.  
  1921.  
  1922. /* NOTE: All Message Numbers below 0x0400 are RESERVED. */
  1923.  
  1924. /* Private Window Messages Start Here: */
  1925. #define WM_USER            0x0400
  1926.  
  1927. #ifndef NONCMESSAGES
  1928.  
  1929. /* WM_SYNCTASK Commands */
  1930. #define ST_BEGINSWP        0
  1931. #define ST_ENDSWP        1
  1932.  
  1933. /* WinWhere() Area Codes */
  1934. #define HTERROR         (-2)
  1935. #define HTTRANSPARENT        (-1)
  1936. #define HTNOWHERE        0
  1937. #define HTCLIENT        1
  1938. #define HTCAPTION        2
  1939. #define HTSYSMENU        3
  1940. #define HTGROWBOX        4
  1941. #define HTSIZE            HTGROWBOX
  1942. #define HTMENU            5
  1943. #define HTHSCROLL        6
  1944. #define HTVSCROLL        7
  1945. #define HTREDUCE        8
  1946. #define HTZOOM            9
  1947. #define HTLEFT            10
  1948. #define HTRIGHT         11
  1949. #define HTTOP            12
  1950. #define HTTOPLEFT        13
  1951. #define HTTOPRIGHT        14
  1952. #define HTBOTTOM        15
  1953. #define HTBOTTOMLEFT        16
  1954. #define HTBOTTOMRIGHT        17
  1955. #define HTSIZEFIRST        HTLEFT
  1956. #define HTSIZELAST        HTBOTTOMRIGHT
  1957.  
  1958. #endif /* NONCMESSAGES */
  1959.  
  1960. /* WM_MOUSEACTIVATE Return Codes */
  1961. #define MA_ACTIVATE        1
  1962. #define MA_ACTIVATEANDEAT   2
  1963. #define MA_NOACTIVATE        3
  1964.  
  1965. WORD FAR PASCAL RegisterWindowMessage(LPSTR);
  1966.  
  1967. /* Size Message Commands */
  1968. #define SIZENORMAL        0
  1969. #define SIZEICONIC        1
  1970. #define SIZEFULLSCREEN        2
  1971. #define SIZEZOOMSHOW        3
  1972. #define SIZEZOOMHIDE        4
  1973.  
  1974. #ifndef NOKEYSTATES
  1975.  
  1976. /* Key State Masks for Mouse Messages */
  1977. #define MK_LBUTTON        0x0001
  1978. #define MK_RBUTTON        0x0002
  1979. #define MK_SHIFT        0x0004
  1980. #define MK_CONTROL        0x0008
  1981. #define MK_MBUTTON        0x0010
  1982.  
  1983. #endif /* NOKEYSTATES */
  1984.  
  1985. #endif /* NOWINMESSAGES */
  1986.  
  1987. #ifndef NOWINSTYLES
  1988.  
  1989. /* Window Styles */
  1990. #define WS_OVERLAPPED        0x00000000L
  1991. #define WS_POPUP        0x80000000L
  1992. #define WS_CHILD        0x40000000L
  1993. #define WS_MINIMIZE        0x20000000L
  1994. #define WS_VISIBLE        0x10000000L
  1995. #define WS_DISABLED        0x08000000L
  1996. #define WS_CLIPSIBLINGS     0x04000000L
  1997. #define WS_CLIPCHILDREN     0x02000000L
  1998. #define WS_MAXIMIZE        0x01000000L
  1999. #define WS_CAPTION        0x00C00000L     /* WS_BORDER | WS_DLGFRAME    */
  2000. #define WS_BORDER        0x00800000L
  2001. #define WS_DLGFRAME        0x00400000L
  2002. #define WS_VSCROLL        0x00200000L
  2003. #define WS_HSCROLL        0x00100000L
  2004. #define WS_SYSMENU        0x00080000L
  2005. #define WS_THICKFRAME        0x00040000L
  2006. #define WS_GROUP        0x00020000L
  2007. #define WS_TABSTOP        0x00010000L
  2008.  
  2009. #define WS_MINIMIZEBOX        0x00020000L
  2010. #define WS_MAXIMIZEBOX        0x00010000L
  2011.  
  2012. #define WS_TILED        WS_OVERLAPPED
  2013. #define WS_ICONIC        WS_MINIMIZE
  2014. #define WS_SIZEBOX        WS_THICKFRAME
  2015.  
  2016. /* Common Window Styles */
  2017. #define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX)
  2018. #define WS_POPUPWINDOW        (WS_POPUP | WS_BORDER | WS_SYSMENU)
  2019. #define WS_CHILDWINDOW        (WS_CHILD)
  2020.  
  2021. #define WS_TILEDWINDOW        (WS_OVERLAPPEDWINDOW)
  2022.  
  2023. /* Extended Window Styles */
  2024. #define WS_EX_DLGMODALFRAME 0x00000001L
  2025. #define WS_EX_NOPARENTNOTIFY 0x00000004L
  2026.  
  2027. /* Class styles */
  2028. #define CS_VREDRAW        0x0001
  2029. #define CS_HREDRAW        0x0002
  2030. #define CS_KEYCVTWINDOW     0x0004
  2031. #define CS_DBLCLKS        0x0008
  2032.             /*  0x0010 -- no longer used */
  2033. #define CS_OWNDC        0x0020
  2034. #define CS_CLASSDC        0x0040
  2035. #define CS_PARENTDC        0x0080
  2036. #define CS_NOKEYCVT        0x0100
  2037. #define CS_NOCLOSE        0x0200
  2038. #define CS_SAVEBITS        0x0800
  2039. #define CS_BYTEALIGNCLIENT  0x1000
  2040. #define CS_BYTEALIGNWINDOW  0x2000
  2041. #define CS_GLOBALCLASS        0x4000    /* Global window class */
  2042.  
  2043. #endif /* NOWINSTYLES */
  2044.  
  2045. #ifndef NOCLIPBOARD
  2046.  
  2047. /* Predefined Clipboard Formats */
  2048. #define CF_TEXT         1
  2049. #define CF_BITMAP        2
  2050. #define CF_METAFILEPICT     3
  2051. #define CF_SYLK         4
  2052. #define CF_DIF            5
  2053. #define CF_TIFF         6
  2054. #define CF_OEMTEXT        7
  2055. #define CF_DIB            8
  2056. #define CF_PALETTE        9
  2057.  
  2058. #define CF_OWNERDISPLAY     0x0080
  2059. #define CF_DSPTEXT        0x0081
  2060. #define CF_DSPBITMAP        0x0082
  2061. #define CF_DSPMETAFILEPICT  0x0083
  2062.  
  2063. /* "Private" formats don't get GlobalFree()'d */
  2064. #define CF_PRIVATEFIRST     0x0200
  2065. #define CF_PRIVATELAST        0x02FF
  2066.  
  2067. /* "GDIOBJ" formats do get DeleteObject()'d */
  2068. #define CF_GDIOBJFIRST        0x0300
  2069. #define CF_GDIOBJLAST        0x03FF
  2070.  
  2071. #endif /* NOCLIPBOARD */
  2072.  
  2073. typedef struct tagPAINTSTRUCT
  2074.   {
  2075.     HDC     hdc;
  2076.     BOOL    fErase;
  2077.     RECT    rcPaint;
  2078.     BOOL    fRestore;
  2079.     BOOL    fIncUpdate;
  2080.     BYTE    rgbReserved[16];
  2081.   } PAINTSTRUCT;
  2082. typedef PAINTSTRUCT        *PPAINTSTRUCT;
  2083. typedef PAINTSTRUCT NEAR    *NPPAINTSTRUCT;
  2084. typedef PAINTSTRUCT FAR     *LPPAINTSTRUCT;
  2085.  
  2086. typedef struct tagCREATESTRUCT
  2087.   {
  2088.     LPSTR    lpCreateParams;
  2089.     HANDLE    hInstance;
  2090.     HANDLE    hMenu;
  2091.     HWND    hwndParent;
  2092.     int     cy;
  2093.     int     cx;
  2094.     int     y;
  2095.     int     x;
  2096.     LONG    style;
  2097.     LPSTR    lpszName;
  2098.     LPSTR    lpszClass;
  2099.     DWORD    dwExStyle;
  2100.   } CREATESTRUCT;
  2101. typedef CREATESTRUCT FAR    *LPCREATESTRUCT;
  2102.  
  2103.  
  2104. /* Owner draw control types */
  2105. #define ODT_MENU    1
  2106. #define ODT_LISTBOX    2
  2107. #define ODT_COMBOBOX    3
  2108. #define ODT_BUTTON    4
  2109.  
  2110. /* Owner draw actions */
  2111. #define ODA_DRAWENTIRE    0x0001
  2112. #define ODA_SELECT    0x0002
  2113. #define ODA_FOCUS    0x0004
  2114.  
  2115. /* Owner draw state */
  2116. #define ODS_SELECTED    0x0001
  2117. #define ODS_GRAYED    0x0002
  2118. #define ODS_DISABLED    0x0004
  2119. #define ODS_CHECKED    0x0008
  2120. #define ODS_FOCUS    0x0010
  2121.  
  2122. /* MEASUREITEMSTRUCT for ownerdraw */
  2123. typedef struct tagMEASUREITEMSTRUCT
  2124.   {
  2125.     WORD    CtlType;
  2126.     WORD    CtlID;
  2127.     WORD    itemID;
  2128.     WORD    itemWidth;
  2129.     WORD    itemHeight;
  2130.     DWORD       itemData;
  2131.   } MEASUREITEMSTRUCT;
  2132. typedef MEASUREITEMSTRUCT NEAR *PMEASUREITEMSTRUCT;
  2133. typedef MEASUREITEMSTRUCT FAR  *LPMEASUREITEMSTRUCT;
  2134.  
  2135.  
  2136. /* DRAWITEMSTRUCT for ownerdraw */
  2137. typedef struct tagDRAWITEMSTRUCT
  2138.   {
  2139.     WORD    CtlType;
  2140.     WORD    CtlID;
  2141.     WORD    itemID;
  2142.     WORD    itemAction;
  2143.     WORD    itemState;
  2144.     HWND    hwndItem;
  2145.     HDC        hDC;
  2146.     RECT    rcItem;
  2147.     DWORD    itemData;
  2148.   } DRAWITEMSTRUCT;
  2149. typedef DRAWITEMSTRUCT NEAR *PDRAWITEMSTRUCT;
  2150. typedef DRAWITEMSTRUCT FAR  *LPDRAWITEMSTRUCT;
  2151.  
  2152. /* DELETEITEMSTRUCT for ownerdraw */
  2153. typedef struct tagDELETEITEMSTRUCT
  2154.   {
  2155.     WORD       CtlType;
  2156.     WORD       CtlID;
  2157.     WORD       itemID;
  2158.     HWND       hwndItem;
  2159.     DWORD      itemData;
  2160.   } DELETEITEMSTRUCT;
  2161. typedef DELETEITEMSTRUCT NEAR *PDELETEITEMSTRUCT;
  2162. typedef DELETEITEMSTRUCT FAR  *LPDELETEITEMSTRUCT;
  2163.  
  2164. /* COMPAREITEMSTUCT for ownerdraw sorting */
  2165. typedef struct tagCOMPAREITEMSTRUCT
  2166.   {
  2167.     WORD    CtlType;
  2168.     WORD    CtlID;
  2169.     HWND    hwndItem;
  2170.     WORD    itemID1;
  2171.     DWORD    itemData1;
  2172.     WORD    itemID2;
  2173.     DWORD    itemData2;
  2174.   } COMPAREITEMSTRUCT;
  2175. typedef COMPAREITEMSTRUCT NEAR *PCOMPAREITEMSTRUCT;
  2176. typedef COMPAREITEMSTRUCT FAR  *LPCOMPAREITEMSTRUCT;
  2177.  
  2178. #ifndef NOMSG
  2179.  
  2180. /* Message Function Templates */
  2181. BOOL FAR PASCAL GetMessage(LPMSG, HWND, WORD, WORD);
  2182. BOOL FAR PASCAL TranslateMessage(LPMSG);
  2183. LONG FAR PASCAL DispatchMessage(LPMSG);
  2184. BOOL FAR PASCAL PeekMessage(LPMSG, HWND, WORD, WORD, WORD);
  2185.  
  2186. /* PeekMessage() Options */
  2187. #define PM_NOREMOVE        0x0000
  2188. #define PM_REMOVE        0x0001
  2189. #define PM_NOYIELD        0x0002
  2190.  
  2191. #endif /* NOMSG */
  2192.  
  2193. #ifdef WIN_INTERNAL
  2194.     #ifndef LSTRING
  2195.     #define NOLSTRING
  2196.     #endif
  2197.     #ifndef LFILEIO
  2198.     #define NOLFILEIO
  2199.     #endif
  2200. #endif
  2201.  
  2202. #ifndef NOLSTRING
  2203. int         FAR PASCAL lstrcmp( LPSTR, LPSTR );
  2204. int         FAR PASCAL lstrcmpi( LPSTR, LPSTR );
  2205. LPSTR       FAR PASCAL lstrcpy( LPSTR, LPSTR );
  2206. LPSTR       FAR PASCAL lstrcat( LPSTR, LPSTR );
  2207. int         FAR PASCAL lstrlen( LPSTR );
  2208. #endif    /* NOLSTRING */
  2209.  
  2210. #ifndef NOLFILEIO
  2211. int         FAR PASCAL _lopen( LPSTR, int );
  2212. int         FAR PASCAL _lclose( int );
  2213. int         FAR PASCAL _lcreat( LPSTR, int );
  2214. LONG        FAR PASCAL _llseek( int, long, int );
  2215. WORD        FAR PASCAL _lread( int, LPSTR, int );
  2216. WORD        FAR PASCAL _lwrite( int, LPSTR, int );
  2217.  
  2218. #define READ        0   /* Flags for _lopen */
  2219. #define WRITE       1
  2220. #define READ_WRITE  2
  2221. #endif    /* NOLFILEIO */
  2222.  
  2223. BOOL  FAR PASCAL ExitWindows(DWORD dwReserved, WORD wReturnCode);
  2224.  
  2225. BOOL  FAR PASCAL SwapMouseButton(BOOL);
  2226. DWORD FAR PASCAL GetMessagePos(void);
  2227. LONG  FAR PASCAL GetMessageTime(void);
  2228.  
  2229. HWND  FAR PASCAL GetSysModalWindow(void);
  2230. HWND  FAR PASCAL SetSysModalWindow(HWND);
  2231.  
  2232. LONG  FAR PASCAL SendMessage(HWND, WORD, WORD, LONG);
  2233. BOOL  FAR PASCAL PostMessage(HWND, WORD, WORD, LONG);
  2234. BOOL  FAR PASCAL PostAppMessage(HANDLE, WORD, WORD, LONG);
  2235. void  FAR PASCAL ReplyMessage(LONG);
  2236. void  FAR PASCAL WaitMessage(void);
  2237. LONG  FAR PASCAL DefWindowProc(HWND, WORD, WORD, LONG);
  2238. void  FAR PASCAL PostQuitMessage(int);
  2239. LONG  FAR PASCAL CallWindowProc(FARPROC, HWND, WORD, WORD, LONG);
  2240. BOOL  FAR PASCAL InSendMessage(void);
  2241.  
  2242. WORD  FAR PASCAL GetDoubleClickTime(void);
  2243. void  FAR PASCAL SetDoubleClickTime(WORD);
  2244.  
  2245. BOOL  FAR PASCAL RegisterClass(LPWNDCLASS);
  2246. BOOL  FAR PASCAL UnregisterClass(LPSTR, HANDLE);
  2247. BOOL  FAR PASCAL GetClassInfo(HANDLE, LPSTR, LPWNDCLASS);
  2248.  
  2249. BOOL  FAR PASCAL SetMessageQueue(int);
  2250.  
  2251. #define CW_USEDEFAULT        ((int)0x8000)
  2252. HWND  FAR PASCAL CreateWindow(LPSTR, LPSTR, DWORD, int, int, int, int, HWND, HMENU, HANDLE, LPSTR);
  2253. HWND  FAR PASCAL CreateWindowEx(DWORD, LPSTR, LPSTR, DWORD, int, int, int, int, HWND, HMENU, HANDLE, LPSTR);
  2254.  
  2255. BOOL FAR PASCAL IsWindow(HWND);
  2256. BOOL FAR PASCAL IsChild(HWND, HWND);
  2257. BOOL FAR PASCAL DestroyWindow(HWND);
  2258.  
  2259. BOOL FAR PASCAL ShowWindow(HWND, int);
  2260. BOOL FAR PASCAL FlashWindow(HWND, BOOL);
  2261. void FAR PASCAL ShowOwnedPopups(HWND, BOOL);
  2262.  
  2263. BOOL FAR PASCAL OpenIcon(HWND);
  2264. void FAR PASCAL CloseWindow(HWND);
  2265. void FAR PASCAL MoveWindow(HWND, int, int, int, int, BOOL);
  2266. void FAR PASCAL SetWindowPos(HWND, HWND, int, int, int, int, WORD);
  2267.  
  2268. #ifndef NODEFERWINDOWPOS
  2269.  
  2270. HANDLE FAR PASCAL BeginDeferWindowPos(int nNumWindows);
  2271. HANDLE FAR PASCAL DeferWindowPos(HANDLE hWinPosInfo, HWND hWnd, HWND hWndInsertAfter, int x, int y, int cx, int cy, WORD wFlags);
  2272. void FAR PASCAL EndDeferWindowPos(HANDLE hWinPosInfo);
  2273.  
  2274. #endif /* NODEFERWINDOWPOS */
  2275.  
  2276. BOOL FAR PASCAL IsWindowVisible(HWND);
  2277. BOOL FAR PASCAL IsIconic(HWND);
  2278. BOOL FAR PASCAL AnyPopup(void);
  2279. void FAR PASCAL BringWindowToTop(HWND);
  2280. BOOL FAR PASCAL IsZoomed(HWND);
  2281.  
  2282. /* SetWindowPos Flags */
  2283. #define SWP_NOSIZE        0x0001
  2284. #define SWP_NOMOVE        0x0002
  2285. #define SWP_NOZORDER        0x0004
  2286. #define SWP_NOREDRAW        0x0008
  2287. #define SWP_NOACTIVATE        0x0010
  2288. #define SWP_DRAWFRAME        0x0020
  2289. #define SWP_SHOWWINDOW        0x0040
  2290. #define SWP_HIDEWINDOW        0x0080
  2291. #define SWP_NOCOPYBITS        0x0100
  2292. #define SWP_NOREPOSITION    0x0200
  2293.  
  2294. #ifndef NOCTLMGR
  2295.  
  2296. HWND FAR PASCAL CreateDialog(HANDLE, LPSTR, HWND, FARPROC);
  2297. HWND FAR PASCAL CreateDialogIndirect(HANDLE, LPSTR, HWND, FARPROC);
  2298. HWND FAR PASCAL CreateDialogParam(HANDLE, LPSTR, HWND, FARPROC, LONG);
  2299. HWND FAR PASCAL CreateDialogIndirectParam(HANDLE, LPSTR, HWND, FARPROC, LONG);
  2300. int  FAR PASCAL DialogBox(HANDLE, LPSTR, HWND, FARPROC);
  2301. int  FAR PASCAL DialogBoxIndirect(HANDLE, HANDLE, HWND, FARPROC);
  2302. int  FAR PASCAL DialogBoxParam(HANDLE, LPSTR, HWND, FARPROC, LONG);
  2303. int  FAR PASCAL DialogBoxIndirectParam(HANDLE, HANDLE, HWND, FARPROC, LONG);
  2304. void FAR PASCAL EndDialog(HWND, int);
  2305. HWND FAR PASCAL GetDlgItem(HWND, int);
  2306. void FAR PASCAL SetDlgItemInt(HWND, int, WORD, BOOL);
  2307. WORD FAR PASCAL GetDlgItemInt(HWND, int, BOOL FAR *, BOOL);
  2308. void FAR PASCAL SetDlgItemText(HWND, int, LPSTR);
  2309. int  FAR PASCAL GetDlgItemText(HWND, int, LPSTR, int);
  2310. void FAR PASCAL CheckDlgButton(HWND, int, WORD);
  2311. void FAR PASCAL CheckRadioButton(HWND, int, int, int);
  2312. WORD FAR PASCAL IsDlgButtonChecked(HWND, int);
  2313. LONG FAR PASCAL SendDlgItemMessage(HWND, int, WORD, WORD, LONG);
  2314. HWND FAR PASCAL GetNextDlgGroupItem(HWND, HWND, BOOL);
  2315. HWND FAR PASCAL GetNextDlgTabItem(HWND, HWND, BOOL);
  2316. int  FAR PASCAL GetDlgCtrlID(HWND);
  2317. long FAR PASCAL GetDialogBaseUnits(void);
  2318. LONG FAR PASCAL DefDlgProc(HWND, WORD, WORD, LONG);
  2319. #define DLGWINDOWEXTRA   30     /* Window extra byted needed for private dialog classes */
  2320.  
  2321. #endif /* NOCTLMGR */
  2322.  
  2323. #ifndef NOMSG
  2324. BOOL FAR PASCAL CallMsgFilter(LPMSG, int);
  2325. #endif
  2326.  
  2327. #ifndef NOCLIPBOARD
  2328.  
  2329. /* Clipboard Manager Functions */
  2330. BOOL   FAR PASCAL OpenClipboard(HWND);
  2331. BOOL   FAR PASCAL CloseClipboard(void);
  2332. HWND   FAR PASCAL GetClipboardOwner(void);
  2333. HWND   FAR PASCAL SetClipboardViewer(HWND);
  2334. HWND   FAR PASCAL GetClipboardViewer(void);
  2335. BOOL   FAR PASCAL ChangeClipboardChain(HWND, HWND);
  2336. HANDLE FAR PASCAL SetClipboardData(WORD, HANDLE);
  2337. HANDLE FAR PASCAL GetClipboardData(WORD);
  2338. WORD   FAR PASCAL RegisterClipboardFormat(LPSTR);
  2339. int    FAR PASCAL CountClipboardFormats(void);
  2340. WORD   FAR PASCAL EnumClipboardFormats(WORD);
  2341. int    FAR PASCAL GetClipboardFormatName(WORD, LPSTR, int);
  2342. BOOL   FAR PASCAL EmptyClipboard(void);
  2343. BOOL   FAR PASCAL IsClipboardFormatAvailable(WORD);
  2344. int    FAR PASCAL GetPriorityClipboardFormat(WORD  FAR *, int);
  2345.  
  2346. #endif /* NOCLIPBOARD */
  2347.  
  2348. HWND FAR PASCAL SetFocus(HWND);
  2349. HWND FAR PASCAL GetFocus(void);
  2350. HWND FAR PASCAL GetActiveWindow(void);
  2351. int  FAR PASCAL GetKeyState(int);
  2352. int  FAR PASCAL GetAsyncKeyState(int);
  2353. void FAR PASCAL GetKeyboardState(BYTE FAR *);
  2354. void FAR PASCAL SetKeyboardState(BYTE FAR *);
  2355. BOOL FAR PASCAL EnableHardwareInput(BOOL);
  2356. BOOL FAR PASCAL GetInputState(void);
  2357. HWND FAR PASCAL GetCapture(void);
  2358. HWND FAR PASCAL SetCapture(HWND);
  2359. void FAR PASCAL ReleaseCapture(void);
  2360.  
  2361. /* Windows Functions */
  2362. WORD FAR PASCAL SetTimer(HWND, int, WORD, FARPROC);
  2363. BOOL FAR PASCAL KillTimer(HWND, int);
  2364.  
  2365. BOOL FAR PASCAL EnableWindow(HWND,BOOL);
  2366. BOOL FAR PASCAL IsWindowEnabled(HWND);
  2367.  
  2368. HANDLE FAR PASCAL LoadAccelerators(HANDLE, LPSTR);
  2369.  
  2370. #ifndef NOMSG
  2371. int  FAR PASCAL TranslateAccelerator(HWND, HANDLE, LPMSG);
  2372. #endif
  2373.  
  2374. #ifndef NOSYSMETRICS
  2375.  
  2376. /* GetSystemMetrics() codes */
  2377. #define SM_CXSCREEN        0
  2378. #define SM_CYSCREEN        1
  2379. #define SM_CXVSCROLL        2
  2380. #define SM_CYHSCROLL        3
  2381. #define SM_CYCAPTION        4
  2382. #define SM_CXBORDER        5
  2383. #define SM_CYBORDER        6
  2384. #define SM_CXDLGFRAME        7
  2385. #define SM_CYDLGFRAME        8
  2386. #define SM_CYVTHUMB        9
  2387. #define SM_CXHTHUMB        10
  2388. #define SM_CXICON        11
  2389. #define SM_CYICON        12
  2390. #define SM_CXCURSOR        13
  2391. #define SM_CYCURSOR        14
  2392. #define SM_CYMENU        15
  2393. #define SM_CXFULLSCREEN     16
  2394. #define SM_CYFULLSCREEN     17
  2395. #define SM_CYKANJIWINDOW    18
  2396. #define SM_MOUSEPRESENT     19
  2397. #define SM_CYVSCROLL        20
  2398. #define SM_CXHSCROLL        21
  2399. #define SM_DEBUG        22
  2400. #define SM_SWAPBUTTON        23
  2401. #define SM_RESERVED1        24
  2402. #define SM_RESERVED2        25
  2403. #define SM_RESERVED3        26
  2404. #define SM_RESERVED4        27
  2405. #define SM_CXMIN        28
  2406. #define SM_CYMIN        29
  2407. #define SM_CXSIZE        30
  2408. #define SM_CYSIZE        31
  2409. #define SM_CXFRAME        32
  2410. #define SM_CYFRAME        33
  2411. #define SM_CXMINTRACK        34
  2412. #define SM_CYMINTRACK        35
  2413. #define SM_CMETRICS        36
  2414.  
  2415. int FAR PASCAL GetSystemMetrics(int);
  2416.  
  2417. #endif /* NOSYSMETRICS */
  2418.  
  2419. #ifndef NOMENUS
  2420.  
  2421. HMENU FAR PASCAL LoadMenu(HANDLE, LPSTR);
  2422. HMENU FAR PASCAL LoadMenuIndirect(LPSTR);
  2423. HMENU FAR PASCAL GetMenu(HWND);
  2424. BOOL  FAR PASCAL SetMenu(HWND, HMENU);
  2425. BOOL  FAR PASCAL ChangeMenu(HMENU, WORD, LPSTR, WORD, WORD);
  2426. BOOL  FAR PASCAL HiliteMenuItem(HWND, HMENU, WORD, WORD);
  2427. int   FAR PASCAL GetMenuString(HMENU, WORD, LPSTR, int, WORD);
  2428. WORD  FAR PASCAL GetMenuState(HMENU, WORD, WORD);
  2429. void  FAR PASCAL DrawMenuBar(HWND);
  2430. HMENU FAR PASCAL GetSystemMenu(HWND, BOOL);
  2431. HMENU FAR PASCAL CreateMenu(void);
  2432. HMENU FAR PASCAL CreatePopupMenu(void);
  2433. BOOL  FAR PASCAL DestroyMenu(HMENU);
  2434. BOOL  FAR PASCAL CheckMenuItem(HMENU, WORD, WORD);
  2435. BOOL  FAR PASCAL EnableMenuItem(HMENU, WORD, WORD);
  2436. HMENU FAR PASCAL GetSubMenu(HMENU, int);
  2437. WORD  FAR PASCAL GetMenuItemID(HMENU, int);
  2438. WORD  FAR PASCAL GetMenuItemCount(HMENU);
  2439.  
  2440. BOOL  FAR PASCAL InsertMenu(HMENU, WORD, WORD, WORD, LPSTR);
  2441. BOOL  FAR PASCAL AppendMenu(HMENU, WORD, WORD, LPSTR);
  2442. BOOL  FAR PASCAL ModifyMenu(HMENU, WORD, WORD, WORD, LPSTR);
  2443. BOOL  FAR PASCAL RemoveMenu(HMENU, WORD, WORD);
  2444. BOOL  FAR PASCAL DeleteMenu(HMENU, WORD, WORD);
  2445. BOOL  FAR PASCAL SetMenuItemBitmaps(HMENU, WORD, WORD, HBITMAP, HBITMAP);
  2446. LONG  FAR PASCAL GetMenuCheckMarkDimensions(void);
  2447. BOOL  FAR PASCAL TrackPopupMenu(HMENU, WORD, int, int, int, HWND, LPRECT);
  2448.  
  2449. #endif /* NOMENUS */
  2450.  
  2451. BOOL FAR PASCAL GrayString(HDC, HBRUSH, FARPROC, DWORD, int, int, int, int, int);
  2452. void FAR PASCAL UpdateWindow(HWND);
  2453. HWND FAR PASCAL SetActiveWindow(HWND);
  2454.  
  2455. HDC  FAR PASCAL BeginPaint(HWND, LPPAINTSTRUCT);
  2456. void FAR PASCAL EndPaint(HWND, LPPAINTSTRUCT);
  2457. BOOL FAR PASCAL GetUpdateRect(HWND, LPRECT, BOOL);
  2458. int  FAR PASCAL GetUpdateRgn(HWND, HRGN, BOOL);
  2459.  
  2460. int  FAR PASCAL ExcludeUpdateRgn(HDC, HWND);
  2461.  
  2462. void FAR PASCAL InvalidateRect(HWND, LPRECT, BOOL);
  2463. void FAR PASCAL ValidateRect(HWND, LPRECT);
  2464.  
  2465. void FAR PASCAL InvalidateRgn(HWND, HRGN, BOOL);
  2466. void FAR PASCAL ValidateRgn(HWND, HRGN);
  2467.  
  2468. void FAR PASCAL ScrollWindow(HWND, int, int, LPRECT, LPRECT);
  2469. BOOL FAR PASCAL ScrollDC(HDC, int, int, LPRECT, LPRECT, HRGN, LPRECT);
  2470.  
  2471. #ifndef NOSCROLL
  2472. int  FAR PASCAL SetScrollPos(HWND, int, int, BOOL);
  2473. int  FAR PASCAL GetScrollPos(HWND, int);
  2474. void FAR PASCAL SetScrollRange(HWND, int, int, int, BOOL);
  2475. void FAR PASCAL GetScrollRange(HWND, int, LPINT, LPINT);
  2476. void FAR PASCAL ShowScrollBar(HWND, WORD, BOOL);
  2477. #endif
  2478.  
  2479. BOOL   FAR PASCAL SetProp(HWND, LPSTR, HANDLE);
  2480. HANDLE FAR PASCAL GetProp(HWND, LPSTR);
  2481. HANDLE FAR PASCAL RemoveProp(HWND, LPSTR);
  2482. int    FAR PASCAL EnumProps(HWND, FARPROC);
  2483. void   FAR PASCAL SetWindowText(HWND, LPSTR);
  2484. int    FAR PASCAL GetWindowText(HWND, LPSTR, int);
  2485. int    FAR PASCAL GetWindowTextLength(HWND);
  2486.  
  2487. void FAR PASCAL GetClientRect(HWND, LPRECT);
  2488. void FAR PASCAL GetWindowRect(HWND, LPRECT);
  2489. void FAR PASCAL AdjustWindowRect(LPRECT, LONG, BOOL);
  2490. void FAR PASCAL AdjustWindowRectEx(LPRECT, LONG, BOOL, DWORD);
  2491.  
  2492. #ifndef NOMB
  2493.  
  2494. /* MessageBox() Flags */
  2495. #define MB_OK            0x0000
  2496. #define MB_OKCANCEL        0x0001
  2497. #define MB_ABORTRETRYIGNORE 0x0002
  2498. #define MB_YESNOCANCEL        0x0003
  2499. #define MB_YESNO        0x0004
  2500. #define MB_RETRYCANCEL        0x0005
  2501.  
  2502. #define MB_ICONHAND        0x0010
  2503. #define MB_ICONQUESTION        0x0020
  2504. #define MB_ICONEXCLAMATION  0x0030
  2505. #define MB_ICONASTERISK     0x0040
  2506.  
  2507. #define MB_ICONINFORMATION  MB_ICONASTERISK
  2508. #define MB_ICONSTOP        MB_ICONHAND
  2509.  
  2510. #define MB_DEFBUTTON1        0x0000
  2511. #define MB_DEFBUTTON2        0x0100
  2512. #define MB_DEFBUTTON3        0x0200
  2513.  
  2514. #define MB_APPLMODAL        0x0000
  2515. #define MB_SYSTEMMODAL        0x1000
  2516. #define MB_TASKMODAL        0x2000
  2517.  
  2518. #define MB_NOFOCUS        0x8000
  2519.  
  2520. #define MB_TYPEMASK        0x000F
  2521. #define MB_ICONMASK        0x00F0
  2522. #define MB_DEFMASK        0x0F00
  2523. #define MB_MODEMASK        0x3000
  2524. #define MB_MISCMASK        0xC000
  2525.  
  2526. int  FAR PASCAL MessageBox(HWND, LPSTR, LPSTR, WORD);
  2527. void FAR PASCAL MessageBeep(WORD);
  2528.  
  2529. #endif /* NOMB */
  2530.  
  2531. int    FAR PASCAL ShowCursor(BOOL);
  2532. void    FAR PASCAL SetCursorPos(int, int);
  2533. HCURSOR FAR PASCAL SetCursor(HCURSOR);
  2534. void    FAR PASCAL GetCursorPos(LPPOINT);
  2535. void    FAR PASCAL ClipCursor(LPRECT);
  2536.  
  2537. void FAR PASCAL CreateCaret(HWND, HBITMAP, int, int);
  2538. WORD FAR PASCAL GetCaretBlinkTime(void);
  2539. void FAR PASCAL SetCaretBlinkTime(WORD);
  2540. void FAR PASCAL DestroyCaret(void);
  2541. void FAR PASCAL HideCaret(HWND);
  2542. void FAR PASCAL ShowCaret(HWND);
  2543. void FAR PASCAL SetCaretPos(int, int);
  2544. void FAR PASCAL GetCaretPos(LPPOINT);
  2545.  
  2546. void FAR PASCAL ClientToScreen(HWND, LPPOINT);
  2547. void FAR PASCAL ScreenToClient(HWND, LPPOINT);
  2548. HWND FAR PASCAL WindowFromPoint(POINT);
  2549. HWND FAR PASCAL ChildWindowFromPoint(HWND, POINT);
  2550.  
  2551. #ifndef NOCOLOR
  2552.  
  2553. /* Color Types */
  2554. #define CTLCOLOR_MSGBOX        0
  2555. #define CTLCOLOR_EDIT        1
  2556. #define CTLCOLOR_LISTBOX    2
  2557. #define CTLCOLOR_BTN        3
  2558. #define CTLCOLOR_DLG        4
  2559. #define CTLCOLOR_SCROLLBAR    5
  2560. #define CTLCOLOR_STATIC        6
  2561. #define CTLCOLOR_MAX        8     /* three bits max */
  2562.  
  2563. #define COLOR_SCROLLBAR        0
  2564. #define COLOR_BACKGROUND    1
  2565. #define COLOR_ACTIVECAPTION    2
  2566. #define COLOR_INACTIVECAPTION    3
  2567. #define COLOR_MENU        4
  2568. #define COLOR_WINDOW        5
  2569. #define COLOR_WINDOWFRAME    6
  2570. #define COLOR_MENUTEXT        7
  2571. #define COLOR_WINDOWTEXT    8
  2572. #define COLOR_CAPTIONTEXT    9
  2573. #define COLOR_ACTIVEBORDER    10
  2574. #define COLOR_INACTIVEBORDER    11
  2575. #define COLOR_APPWORKSPACE    12
  2576. #define COLOR_HIGHLIGHT        13
  2577. #define COLOR_HIGHLIGHTTEXT    14
  2578. #define COLOR_BTNFACE           15
  2579. #define COLOR_BTNSHADOW         16
  2580. #define COLOR_GRAYTEXT          17
  2581. #define COLOR_BTNTEXT        18
  2582. #define COLOR_ENDCOLORS     COLOR_BTNTEXT
  2583.  
  2584. DWORD FAR PASCAL GetSysColor(int);
  2585. void  FAR PASCAL SetSysColors(int, LPINT, LONG FAR *);
  2586.  
  2587. #endif /* NOCOLOR */
  2588.  
  2589. BOOL FAR PASCAL FillRgn(HDC, HRGN, HBRUSH);
  2590. BOOL FAR PASCAL FrameRgn(HDC, HRGN, HBRUSH, int, int);
  2591. BOOL FAR PASCAL InvertRgn(HDC, HRGN);
  2592. BOOL FAR PASCAL PaintRgn(HDC, HRGN);
  2593. BOOL FAR PASCAL PtInRegion(HRGN, int, int);
  2594.  
  2595. void FAR PASCAL DrawFocusRect(HDC, LPRECT);
  2596. int  FAR PASCAL FillRect(HDC, LPRECT, HBRUSH);
  2597. int  FAR PASCAL FrameRect(HDC, LPRECT, HBRUSH);
  2598. void FAR PASCAL InvertRect(HDC, LPRECT);
  2599. void FAR PASCAL SetRect(LPRECT, int, int, int, int);
  2600. void FAR PASCAL SetRectEmpty(LPRECT);
  2601. int  FAR PASCAL CopyRect(LPRECT, LPRECT);
  2602. void FAR PASCAL InflateRect(LPRECT, int, int);
  2603. int  FAR PASCAL IntersectRect(LPRECT, LPRECT, LPRECT);
  2604. int  FAR PASCAL UnionRect(LPRECT, LPRECT, LPRECT);
  2605. void FAR PASCAL OffsetRect(LPRECT, int, int);
  2606. BOOL FAR PASCAL IsRectEmpty(LPRECT);
  2607. BOOL FAR PASCAL EqualRect(LPRECT, LPRECT);
  2608. BOOL FAR PASCAL PtInRect(LPRECT, POINT);
  2609. BOOL FAR PASCAL RectVisible(HDC, LPRECT);
  2610. BOOL FAR PASCAL RectInRegion(HRGN, LPRECT);
  2611.  
  2612. DWORD FAR PASCAL GetCurrentTime(void);
  2613. DWORD FAR PASCAL GetTickCount(void);
  2614.  
  2615. #ifndef NOWINOFFSETS
  2616.  
  2617. WORD FAR PASCAL GetWindowWord(HWND, int);
  2618. WORD FAR PASCAL SetWindowWord(HWND, int, WORD);
  2619. LONG FAR PASCAL GetWindowLong(HWND, int);
  2620. LONG FAR PASCAL SetWindowLong(HWND, int, LONG);
  2621. WORD FAR PASCAL GetClassWord(HWND, int);
  2622. WORD FAR PASCAL SetClassWord(HWND, int, WORD);
  2623. LONG FAR PASCAL GetClassLong(HWND, int);
  2624. LONG FAR PASCAL SetClassLong(HWND, int, LONG);
  2625. HWND FAR PASCAL GetDesktopHwnd(void);
  2626. HWND FAR PASCAL GetDesktopWindow(void);
  2627.  
  2628. #endif /* NOWINOFFSETS */
  2629.  
  2630. HWND   FAR PASCAL GetParent(HWND);
  2631. HWND   FAR PASCAL SetParent(HWND, HWND);
  2632. BOOL   FAR PASCAL EnumChildWindows(HWND, FARPROC, LONG);
  2633. HWND   FAR PASCAL FindWindow(LPSTR, LPSTR);
  2634. BOOL   FAR PASCAL EnumWindows(FARPROC, LONG);
  2635. BOOL   FAR PASCAL EnumTaskWindows(HANDLE, FARPROC, LONG);
  2636. int    FAR PASCAL GetClassName(HWND, LPSTR, int);
  2637. HWND   FAR PASCAL GetTopWindow(HWND);
  2638. HWND   FAR PASCAL GetNextWindow(HWND, WORD);
  2639. HANDLE FAR PASCAL GetWindowTask(HWND);
  2640. HWND   FAR PASCAL GetLastActivePopup(HWND);
  2641.  
  2642. /* GetWindow() Constants */
  2643. #define GW_HWNDFIRST        0
  2644. #define GW_HWNDLAST        1
  2645. #define GW_HWNDNEXT        2
  2646. #define GW_HWNDPREV        3
  2647. #define GW_OWNER        4
  2648. #define GW_CHILD        5
  2649.  
  2650. HWND FAR PASCAL GetWindow(HWND, WORD);
  2651.  
  2652. #ifndef NOWH
  2653. FARPROC FAR PASCAL SetWindowsHook(int, FARPROC);
  2654. BOOL    FAR PASCAL UnhookWindowsHook(int, FARPROC);
  2655. DWORD    FAR PASCAL DefHookProc(int, WORD, DWORD, FARPROC FAR *);
  2656. #endif
  2657.  
  2658. #ifndef NOMENUS
  2659.  
  2660. /* Menu flags for Add/Check/EnableMenuItem() */
  2661. #define MF_INSERT       0x0000
  2662. #define MF_CHANGE       0x0080
  2663. #define MF_APPEND       0x0100
  2664. #define MF_DELETE       0x0200
  2665. #define MF_REMOVE       0x1000
  2666.  
  2667. #define MF_BYCOMMAND       0x0000
  2668. #define MF_BYPOSITION       0x0400
  2669.  
  2670.  
  2671. #define MF_SEPARATOR       0x0800
  2672.  
  2673. #define MF_ENABLED       0x0000
  2674. #define MF_GRAYED       0x0001
  2675. #define MF_DISABLED       0x0002
  2676.  
  2677. #define MF_UNCHECKED       0x0000
  2678. #define MF_CHECKED       0x0008
  2679. #define MF_USECHECKBITMAPS 0x0200
  2680.  
  2681. #define MF_STRING       0x0000
  2682. #define MF_BITMAP       0x0004
  2683. #define MF_OWNERDRAW       0x0100
  2684.  
  2685. #define MF_POPUP       0x0010
  2686. #define MF_MENUBARBREAK    0x0020
  2687. #define MF_MENUBREAK       0x0040
  2688.  
  2689. #define MF_UNHILITE       0x0000
  2690. #define MF_HILITE       0x0080
  2691.  
  2692. #define MF_SYSMENU       0x2000
  2693. #define MF_HELP           0x4000
  2694. #define MF_MOUSESELECT       0x8000
  2695.  
  2696. /* Menu item resource format */
  2697. typedef struct 
  2698.   {
  2699.     WORD versionNumber;
  2700.     WORD offset;
  2701.   } MENUITEMTEMPLATEHEADER;
  2702.  
  2703. typedef struct
  2704.   {
  2705.     WORD  mtOption;
  2706.     WORD  mtID;
  2707.     char  mtString[1];
  2708.   } MENUITEMTEMPLATE;
  2709.  
  2710. #define MF_END             0x0080
  2711.  
  2712. #endif /* NOMENUS */
  2713.  
  2714. #ifndef NOSYSCOMMANDS
  2715.  
  2716. /* System Menu Command Values */
  2717. #define SC_SIZE        0xF000
  2718. #define SC_MOVE        0xF010
  2719. #define SC_MINIMIZE    0xF020
  2720. #define SC_MAXIMIZE    0xF030
  2721. #define SC_NEXTWINDOW    0xF040
  2722. #define SC_PREVWINDOW    0xF050
  2723. #define SC_CLOSE    0xF060
  2724. #define SC_VSCROLL    0xF070
  2725. #define SC_HSCROLL    0xF080
  2726. #define SC_MOUSEMENU    0xF090
  2727. #define SC_KEYMENU    0xF100
  2728. #define SC_ARRANGE    0xF110
  2729. #define SC_RESTORE    0xF120
  2730. #define SC_TASKLIST    0xF130
  2731.  
  2732. #define SC_ICON        SC_MINIMIZE
  2733. #define SC_ZOOM     SC_MAXIMIZE
  2734.  
  2735. #endif /* NOSYSCOMMANDS */
  2736.  
  2737. /* Resource Loading Routines */
  2738. HBITMAP FAR PASCAL LoadBitmap(HANDLE, LPSTR);
  2739. HCURSOR FAR PASCAL LoadCursor(HANDLE, LPSTR);
  2740. HCURSOR FAR PASCAL CreateCursor(HANDLE, int, int, int, int, LPSTR, LPSTR);
  2741. BOOL    FAR PASCAL DestroyCursor(HCURSOR);
  2742.  
  2743. /* Standard Cursor IDs */
  2744. #define IDC_ARROW        MAKEINTRESOURCE(32512)
  2745. #define IDC_IBEAM        MAKEINTRESOURCE(32513)
  2746. #define IDC_WAIT        MAKEINTRESOURCE(32514)
  2747. #define IDC_CROSS        MAKEINTRESOURCE(32515)
  2748. #define IDC_UPARROW        MAKEINTRESOURCE(32516)
  2749. #define IDC_SIZE        MAKEINTRESOURCE(32640)
  2750. #define IDC_ICON        MAKEINTRESOURCE(32641)
  2751. #define IDC_SIZENWSE        MAKEINTRESOURCE(32642)
  2752. #define IDC_SIZENESW        MAKEINTRESOURCE(32643)
  2753. #define IDC_SIZEWE        MAKEINTRESOURCE(32644)
  2754. #define IDC_SIZENS        MAKEINTRESOURCE(32645)
  2755.  
  2756. HICON FAR PASCAL LoadIcon(HANDLE, LPSTR);
  2757. HICON FAR PASCAL CreateIcon(HANDLE, int, int, BYTE, BYTE, LPSTR, LPSTR);
  2758. BOOL  FAR PASCAL DestroyIcon(HICON);
  2759.  
  2760.  
  2761. #define ORD_LANGDRIVER    1    /* The ordinal number for the entry point of
  2762.                 ** language drivers.
  2763.                 */
  2764.  
  2765. #ifndef NOICONS
  2766.  
  2767. /* Standard Icon IDs */
  2768. #define IDI_APPLICATION     MAKEINTRESOURCE(32512)
  2769. #define IDI_HAND        MAKEINTRESOURCE(32513)
  2770. #define IDI_QUESTION        MAKEINTRESOURCE(32514)
  2771. #define IDI_EXCLAMATION     MAKEINTRESOURCE(32515)
  2772. #define IDI_ASTERISK        MAKEINTRESOURCE(32516)
  2773.  
  2774. #endif /* NOICONS */
  2775.  
  2776. int  FAR PASCAL LoadString(HANDLE, WORD, LPSTR, int);
  2777.  
  2778. int  FAR PASCAL AddFontResource(LPSTR);
  2779. BOOL FAR PASCAL RemoveFontResource(LPSTR);
  2780.  
  2781. #ifndef NOKANJI
  2782.  
  2783. #define CP_HWND         0
  2784. #define CP_OPEN         1
  2785. #define CP_DIRECT        2
  2786.  
  2787. /* VK from the keyboard driver */
  2788. #define VK_KANA         0x15
  2789. #define VK_ROMAJI        0x16
  2790. #define VK_ZENKAKU        0x17
  2791. #define VK_HIRAGANA        0x18
  2792. #define VK_KANJI        0x19
  2793.  
  2794. /* VK to send to Applications */
  2795. #define VK_CONVERT        0x1C
  2796. #define VK_NONCONVERT        0x1D
  2797. #define VK_ACCEPT        0x1E
  2798. #define VK_MODECHANGE        0x1F
  2799.  
  2800. /* Conversion function numbers */
  2801. #define KNJ_START        0x01
  2802. #define KNJ_END         0x02
  2803. #define KNJ_QUERY        0x03
  2804.  
  2805. #define KNJ_LEARN_MODE        0x10
  2806. #define KNJ_GETMODE        0x11
  2807. #define KNJ_SETMODE        0x12
  2808.  
  2809. #define KNJ_CODECONVERT     0x20
  2810. #define KNJ_CONVERT        0x21
  2811. #define KNJ_NEXT        0x22
  2812. #define KNJ_PREVIOUS        0x23
  2813. #define KNJ_ACCEPT        0x24
  2814.  
  2815. #define KNJ_LEARN        0x30
  2816. #define KNJ_REGISTER        0x31
  2817. #define KNJ_REMOVE        0x32
  2818. #define KNJ_CHANGE_UDIC     0x33
  2819.  
  2820. /* NOTE: DEFAULT    = 0
  2821.  *     JIS1        = 1
  2822.  *     JIS2        = 2
  2823.  *     SJIS2        = 3
  2824.  *     JIS1KATAKANA    = 4
  2825.  *     SJIS2HIRAGANA    = 5
  2826.  *     SJIS2KATAKANA    = 6
  2827.  *     OEM        = F
  2828.  */
  2829.  
  2830. #define KNJ_JIS1toJIS1KATAKANA    0x14
  2831. #define KNJ_JIS1toSJIS2        0x13
  2832. #define KNJ_JIS1toSJIS2HIRAGANA 0x15
  2833. #define KNJ_JIS1toSJIS2KATAKANA 0x16
  2834. #define KNJ_JIS1toDEFAULT    0x10
  2835. #define KNJ_JIS1toSJIS2OEM    0x1F
  2836. #define KNJ_JIS2toSJIS2        0x23
  2837. #define KNJ_SJIS2toJIS2        0x32
  2838.  
  2839. #define KNJ_MD_ALPHA        0x01
  2840. #define KNJ_MD_HIRAGANA        0x02
  2841. #define KNJ_MD_HALF        0x04
  2842. #define KNJ_MD_JIS        0x08
  2843. #define KNJ_MD_SPECIAL        0x10
  2844.  
  2845. #define KNJ_CVT_NEXT        0x01
  2846. #define KNJ_CVT_PREV        0x02
  2847. #define KNJ_CVT_KATAKANA    0x03
  2848. #define KNJ_CVT_HIRAGANA    0x04
  2849. #define KNJ_CVT_JIS1        0x05
  2850. #define KNJ_CVT_SJIS2        0x06
  2851. #define KNJ_CVT_DEFAULT        0x07
  2852. #define KNJ_CVT_TYPED        0x08
  2853.  
  2854. typedef struct
  2855.   {
  2856.     int     fnc;
  2857.     int     wParam;
  2858.     LPSTR    lpSource;
  2859.     LPSTR    lpDest;
  2860.     int     wCount;
  2861.     LPSTR    lpReserved1;
  2862.     LPSTR    lpReserved2;
  2863.   } KANJISTRUCT, FAR *LPKANJISTRUCT;
  2864.  
  2865. int  FAR PASCAL ConvertRequest(HWND, LPKANJISTRUCT);
  2866. BOOL FAR PASCAL SetConvertParams(int, int);
  2867. VOID FAR PASCAL SetConvertHook(BOOL);
  2868.  
  2869. #endif
  2870.  
  2871. /* Key Conversion Window */
  2872. BOOL FAR PASCAL IsTwoByteCharPrefix(char);
  2873.  
  2874. /* Dialog Box Command IDs */
  2875. #define IDOK            1
  2876. #define IDCANCEL        2
  2877. #define IDABORT         3
  2878. #define IDRETRY         4
  2879. #define IDIGNORE        5
  2880. #define IDYES            6
  2881. #define IDNO            7
  2882.  
  2883. #ifndef NOCTLMGR
  2884.  
  2885. /* Control Manager Structures and Definitions */
  2886.  
  2887. #ifndef NOWINSTYLES
  2888.  
  2889. /* Edit Control Styles */
  2890. #define ES_LEFT             0x0000L
  2891. #define ES_CENTER           0x0001L
  2892. #define ES_RIGHT            0x0002L
  2893. #define ES_MULTILINE        0x0004L
  2894. #define ES_UPPERCASE        0x0008L
  2895. #define ES_LOWERCASE        0x0010L
  2896. #define ES_PASSWORD         0x0020L
  2897. #define ES_AUTOVSCROLL      0x0040L
  2898. #define ES_AUTOHSCROLL      0x0080L
  2899. #define ES_NOHIDESEL        0x0100L
  2900. #define ES_OEMCONVERT       0x0400L
  2901.  
  2902.  
  2903. #endif /* NOWINSTYLES */
  2904.  
  2905. /* Edit Control Notification Codes */
  2906. #define EN_SETFOCUS        0x0100
  2907. #define EN_KILLFOCUS        0x0200
  2908. #define EN_CHANGE        0x0300
  2909. #define EN_UPDATE        0x0400
  2910. #define EN_ERRSPACE        0x0500
  2911. #define EN_MAXTEXT        0x0501
  2912. #define EN_HSCROLL        0x0601
  2913. #define EN_VSCROLL        0x0602
  2914.  
  2915. #ifndef NOWINMESSAGES
  2916.  
  2917. /* Edit Control Messages */
  2918. #define EM_GETSEL       (WM_USER+0)
  2919. #define EM_SETSEL       (WM_USER+1)
  2920. #define EM_GETRECT       (WM_USER+2)
  2921. #define EM_SETRECT       (WM_USER+3)
  2922. #define EM_SETRECTNP       (WM_USER+4)
  2923. #define EM_SCROLL       (WM_USER+5)
  2924. #define EM_LINESCROLL       (WM_USER+6)
  2925. #define EM_GETMODIFY       (WM_USER+8)
  2926. #define EM_SETMODIFY       (WM_USER+9)
  2927. #define EM_GETLINECOUNT    (WM_USER+10)
  2928. #define EM_LINEINDEX       (WM_USER+11)
  2929. #define EM_SETHANDLE       (WM_USER+12)
  2930. #define EM_GETHANDLE       (WM_USER+13)
  2931. #define EM_GETTHUMB       (WM_USER+14)
  2932. #define EM_LINELENGTH       (WM_USER+17)
  2933. #define EM_REPLACESEL       (WM_USER+18)
  2934. #define EM_SETFONT       (WM_USER+19)
  2935. #define EM_GETLINE       (WM_USER+20)
  2936. #define EM_LIMITTEXT       (WM_USER+21)
  2937. #define EM_CANUNDO       (WM_USER+22)
  2938. #define EM_UNDO        (WM_USER+23)
  2939. #define EM_FMTLINES       (WM_USER+24)
  2940. #define EM_LINEFROMCHAR    (WM_USER+25)
  2941. #define EM_SETWORDBREAK    (WM_USER+26)
  2942. #define EM_SETTABSTOPS       (WM_USER+27)
  2943. #define EM_SETPASSWORDCHAR (WM_USER+28)
  2944. #define EM_EMPTYUNDOBUFFER (WM_USER+29)
  2945. #define EM_MSGMAX          (WM_USER+30)
  2946.  
  2947. #endif /* NOWINMESSAGES */
  2948.  
  2949. /* Button Control Styles */
  2950. #define BS_PUSHBUTTON       0x00L
  2951. #define BS_DEFPUSHBUTTON   0x01L
  2952. #define BS_CHECKBOX       0x02L
  2953. #define BS_AUTOCHECKBOX    0x03L
  2954. #define BS_RADIOBUTTON       0x04L
  2955. #define BS_3STATE       0x05L
  2956. #define BS_AUTO3STATE       0x06L
  2957. #define BS_GROUPBOX       0x07L
  2958. #define BS_USERBUTTON       0x08L
  2959. #define BS_AUTORADIOBUTTON 0x09L
  2960. #define BS_PUSHBOX       0x0AL
  2961. #define BS_OWNERDRAW       0x0BL
  2962. #define BS_LEFTTEXT       0x20L
  2963.  
  2964.  
  2965. /* User Button Notification Codes */
  2966. #define BN_CLICKED       0
  2967. #define BN_PAINT       1
  2968. #define BN_HILITE       2
  2969. #define BN_UNHILITE       3
  2970. #define BN_DISABLE       4
  2971. #define BN_DOUBLECLICKED   5
  2972.  
  2973. /* Button Control Messages */
  2974. #define BM_GETCHECK       (WM_USER+0)
  2975. #define BM_SETCHECK       (WM_USER+1)
  2976. #define BM_GETSTATE       (WM_USER+2)
  2977. #define BM_SETSTATE       (WM_USER+3)
  2978. #define BM_SETSTYLE       (WM_USER+4)
  2979.  
  2980. /* Static Control Constants */
  2981. #define SS_LEFT        0x00L
  2982. #define SS_CENTER       0x01L
  2983. #define SS_RIGHT       0x02L
  2984. #define SS_ICON        0x03L
  2985. #define SS_BLACKRECT       0x04L
  2986. #define SS_GRAYRECT       0x05L
  2987. #define SS_WHITERECT       0x06L
  2988. #define SS_BLACKFRAME       0x07L
  2989. #define SS_GRAYFRAME       0x08L
  2990. #define SS_WHITEFRAME       0x09L
  2991. #define SS_USERITEM       0x0AL
  2992. #define SS_SIMPLE       0x0BL
  2993. #define SS_LEFTNOWORDWRAP  0x0CL
  2994. #define SS_NOPREFIX       0x80L    /* Don't do "&" character translation */
  2995.  
  2996. /* Dialog Manager Routines */
  2997.  
  2998. #ifndef NOMSG
  2999. BOOL FAR PASCAL IsDialogMessage(HWND, LPMSG);
  3000. #endif
  3001.  
  3002. void FAR PASCAL MapDialogRect(HWND, LPRECT);
  3003.  
  3004. int  FAR PASCAL DlgDirList(HWND, LPSTR, int, int, WORD);
  3005. BOOL FAR PASCAL DlgDirSelect(HWND, LPSTR, int);
  3006. int  FAR PASCAL DlgDirListComboBox(HWND, LPSTR, int, int, WORD);
  3007. BOOL FAR PASCAL DlgDirSelectComboBox(HWND, LPSTR, int);
  3008.  
  3009.  
  3010. /* Dialog Styles */
  3011. #define DS_ABSALIGN        0x01L
  3012. #define DS_SYSMODAL        0x02L
  3013. #define DS_LOCALEDIT        0x20L   /* Edit items get Local storage. */
  3014. #define DS_SETFONT        0x40L   /* User specified font for Dlg controls */
  3015. #define DS_MODALFRAME        0x80L   /* Can be combined with WS_CAPTION  */
  3016. #define DS_NOIDLEMSG        0x100L  /* WM_ENTERIDLE message will not be sent */
  3017.  
  3018. #define DM_GETDEFID        (WM_USER+0)
  3019. #define DM_SETDEFID        (WM_USER+1)
  3020. #define DC_HASDEFID        0x534B
  3021.  
  3022. /* Dialog Codes */
  3023. #define DLGC_WANTARROWS     0x0001    /* Control wants arrow keys        */
  3024. #define DLGC_WANTTAB        0x0002    /* Control wants tab keys        */
  3025. #define DLGC_WANTALLKEYS    0x0004    /* Control wants all keys        */
  3026. #define DLGC_WANTMESSAGE    0x0004    /* Pass message to control        */
  3027. #define DLGC_HASSETSEL        0x0008    /* Understands EM_SETSEL message    */
  3028. #define DLGC_DEFPUSHBUTTON  0x0010    /* Default pushbutton            */
  3029. #define DLGC_UNDEFPUSHBUTTON 0x0020    /* Non-default pushbutton        */
  3030. #define DLGC_RADIOBUTTON    0x0040    /* Radio button             */
  3031. #define DLGC_WANTCHARS        0x0080    /* Want WM_CHAR messages        */
  3032. #define DLGC_STATIC        0x0100    /* Static item: don't include        */
  3033. #define DLGC_BUTTON        0x2000    /* Button item: can be checked        */
  3034.  
  3035. #define LB_CTLCODE        0L
  3036.  
  3037. /* Listbox Return Values */
  3038. #define LB_OKAY         0
  3039. #define LB_ERR            (-1)
  3040. #define LB_ERRSPACE        (-2)
  3041.  
  3042. /*
  3043. **  The idStaticPath parameter to DlgDirList can have the following values
  3044. **  ORed if the list box should show other details of the files along with
  3045. **  the name of the files;
  3046. */
  3047.                   /* all other details also will be returned */
  3048.  
  3049.  
  3050. /* Listbox Notification Codes */
  3051. #define LBN_ERRSPACE        (-2)
  3052. #define LBN_SELCHANGE        1
  3053. #define LBN_DBLCLK        2
  3054. #define LBN_SELCANCEL       3
  3055. #define LBN_SETFOCUS        4
  3056. #define LBN_KILLFOCUS       5
  3057.  
  3058.  
  3059.  
  3060. #ifndef NOWINMESSAGES
  3061.  
  3062. /* Listbox messages */
  3063. #define LB_ADDSTRING           (WM_USER+1)
  3064. #define LB_INSERTSTRING        (WM_USER+2)
  3065. #define LB_DELETESTRING        (WM_USER+3)
  3066. #define LB_RESETCONTENT        (WM_USER+5)
  3067. #define LB_SETSEL           (WM_USER+6)
  3068. #define LB_SETCURSEL           (WM_USER+7)
  3069. #define LB_GETSEL           (WM_USER+8)
  3070. #define LB_GETCURSEL           (WM_USER+9)
  3071. #define LB_GETTEXT           (WM_USER+10)
  3072. #define LB_GETTEXTLEN           (WM_USER+11)
  3073. #define LB_GETCOUNT           (WM_USER+12)
  3074. #define LB_SELECTSTRING        (WM_USER+13)
  3075. #define LB_DIR               (WM_USER+14)
  3076. #define LB_GETTOPINDEX           (WM_USER+15)
  3077. #define LB_FINDSTRING           (WM_USER+16)
  3078. #define LB_GETSELCOUNT           (WM_USER+17)
  3079. #define LB_GETSELITEMS           (WM_USER+18)
  3080. #define LB_SETTABSTOPS         (WM_USER+19)
  3081. #define LB_GETHORIZONTALEXTENT (WM_USER+20)
  3082. #define LB_SETHORIZONTALEXTENT (WM_USER+21)
  3083. #define LB_SETCOLUMNWIDTH      (WM_USER+22)
  3084. #define LB_SETTOPINDEX           (WM_USER+24)
  3085. #define LB_GETITEMRECT           (WM_USER+25)
  3086. #define LB_GETITEMDATA         (WM_USER+26)
  3087. #define LB_SETITEMDATA         (WM_USER+27)
  3088. #define LB_SELITEMRANGE        (WM_USER+28)
  3089. #define LB_MSGMAX           (WM_USER+33)
  3090.  
  3091. #endif /* NOWINMESSAGES */
  3092.  
  3093. #ifndef NOWINSTYLES
  3094.  
  3095. /* Listbox Styles */
  3096. #define LBS_NOTIFY          0x0001L
  3097. #define LBS_SORT          0x0002L
  3098. #define LBS_NOREDRAW          0x0004L
  3099. #define LBS_MULTIPLESEL       0x0008L
  3100. #define LBS_OWNERDRAWFIXED    0x0010L
  3101. #define LBS_OWNERDRAWVARIABLE 0x0020L
  3102. #define LBS_HASSTRINGS        0x0040L
  3103. #define LBS_USETABSTOPS       0x0080L
  3104. #define LBS_NOINTEGRALHEIGHT  0x0100L
  3105. #define LBS_MULTICOLUMN       0x0200L
  3106. #define LBS_WANTKEYBOARDINPUT 0x0400L
  3107. #define LBS_EXTENDEDSEL          0x0800L
  3108. #define LBS_STANDARD          (LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER)
  3109.  
  3110. #endif /* NOWINSTYLES */
  3111.  
  3112.  
  3113. /* Combo Box return Values */
  3114. #define CB_OKAY         0
  3115. #define CB_ERR            (-1)
  3116. #define CB_ERRSPACE        (-2)
  3117.  
  3118.  
  3119. /* Combo Box Notification Codes */
  3120. #define CBN_ERRSPACE        (-1)
  3121. #define CBN_SELCHANGE        1
  3122. #define CBN_DBLCLK        2
  3123. #define CBN_SETFOCUS        3
  3124. #define CBN_KILLFOCUS        4
  3125. #define CBN_EDITCHANGE      5
  3126. #define CBN_EDITUPDATE      6
  3127. #define CBN_DROPDOWN        7
  3128.  
  3129. /* Combo Box styles */
  3130. #ifndef NOWINSTYLES
  3131. #define CBS_SIMPLE          0x0001L
  3132. #define CBS_DROPDOWN          0x0002L
  3133. #define CBS_DROPDOWNLIST      0x0003L
  3134. #define CBS_OWNERDRAWFIXED    0x0010L
  3135. #define CBS_OWNERDRAWVARIABLE 0x0020L
  3136. #define CBS_AUTOHSCROLL       0x0040L
  3137. #define CBS_OEMCONVERT        0x0080L
  3138. #define CBS_SORT              0x0100L
  3139. #define CBS_HASSTRINGS        0x0200L
  3140. #define CBS_NOINTEGRALHEIGHT  0x0400L
  3141. #endif  /* NOWINSTYLES */
  3142.  
  3143.  
  3144. /* Combo Box messages */
  3145. #ifndef NOWINMESSAGES
  3146. #define CB_GETEDITSEL             (WM_USER+0)
  3147. #define CB_LIMITTEXT             (WM_USER+1)
  3148. #define CB_SETEDITSEL             (WM_USER+2)
  3149. #define CB_ADDSTRING             (WM_USER+3)
  3150. #define CB_DELETESTRING             (WM_USER+4)
  3151. #define CB_DIR                   (WM_USER+5)
  3152. #define CB_GETCOUNT             (WM_USER+6)
  3153. #define CB_GETCURSEL             (WM_USER+7)
  3154. #define CB_GETLBTEXT             (WM_USER+8)
  3155. #define CB_GETLBTEXTLEN             (WM_USER+9)
  3156. #define CB_INSERTSTRING          (WM_USER+10)
  3157. #define CB_RESETCONTENT             (WM_USER+11)
  3158. #define CB_FINDSTRING             (WM_USER+12)
  3159. #define CB_SELECTSTRING             (WM_USER+13)
  3160. #define CB_SETCURSEL             (WM_USER+14)
  3161. #define CB_SHOWDROPDOWN          (WM_USER+15)
  3162. #define CB_GETITEMDATA           (WM_USER+16)
  3163. #define CB_SETITEMDATA           (WM_USER+17)
  3164. #define CB_GETDROPPEDCONTROLRECT (WM_USER+18)
  3165. #define CB_MSGMAX                (WM_USER+19)
  3166. #endif  /* NOWINMESSAGES */
  3167.  
  3168.  
  3169.  
  3170. #ifndef NOWINSTYLES
  3171.  
  3172. /* Scroll Bar Styles */
  3173. #define SBS_HORZ            0x0000L
  3174. #define SBS_VERT            0x0001L
  3175. #define SBS_TOPALIGN            0x0002L
  3176. #define SBS_LEFTALIGN            0x0002L
  3177. #define SBS_BOTTOMALIGN            0x0004L
  3178. #define SBS_RIGHTALIGN            0x0004L
  3179. #define SBS_SIZEBOXTOPLEFTALIGN        0x0002L
  3180. #define SBS_SIZEBOXBOTTOMRIGHTALIGN 0x0004L
  3181. #define SBS_SIZEBOX            0x0008L
  3182.  
  3183. #endif /* NOWINSTYLES */
  3184.  
  3185. #endif /* NOCTLMGR */
  3186.  
  3187. #ifndef NOSOUND
  3188.  
  3189. int   FAR PASCAL OpenSound(void);
  3190. void  FAR PASCAL CloseSound(void);
  3191. int   FAR PASCAL SetVoiceQueueSize(int, int);
  3192. int   FAR PASCAL SetVoiceNote(int, int, int, int);
  3193. int   FAR PASCAL SetVoiceAccent(int, int, int, int, int);
  3194. int   FAR PASCAL SetVoiceEnvelope(int, int, int);
  3195. int   FAR PASCAL SetSoundNoise(int, int);
  3196. int   FAR PASCAL SetVoiceSound(int, LONG, int);
  3197. int   FAR PASCAL StartSound(void);
  3198. int   FAR PASCAL StopSound(void);
  3199. int   FAR PASCAL WaitSoundState(int);
  3200. int   FAR PASCAL SyncAllVoices(void);
  3201. int   FAR PASCAL CountVoiceNotes(int);
  3202. LPINT FAR PASCAL GetThresholdEvent(void);
  3203. int   FAR PASCAL GetThresholdStatus(void);
  3204. int   FAR PASCAL SetVoiceThreshold(int, int);
  3205.  
  3206. /* WaitSoundState() Constants */
  3207. #define S_QUEUEEMPTY        0
  3208. #define S_THRESHOLD        1
  3209. #define S_ALLTHRESHOLD        2
  3210.  
  3211. /* Accent Modes */
  3212. #define S_NORMAL      0
  3213. #define S_LEGATO      1
  3214. #define S_STACCATO    2
  3215.  
  3216. /* SetSoundNoise() Sources */
  3217. #define S_PERIOD512   0     /* Freq = N/512 high pitch, less coarse hiss  */
  3218. #define S_PERIOD1024  1     /* Freq = N/1024                  */
  3219. #define S_PERIOD2048  2     /* Freq = N/2048 low pitch, more coarse hiss  */
  3220. #define S_PERIODVOICE 3     /* Source is frequency from voice channel (3) */
  3221. #define S_WHITE512    4     /* Freq = N/512 high pitch, less coarse hiss  */
  3222. #define S_WHITE1024   5     /* Freq = N/1024                  */
  3223. #define S_WHITE2048   6     /* Freq = N/2048 low pitch, more coarse hiss  */
  3224. #define S_WHITEVOICE  7     /* Source is frequency from voice channel (3) */
  3225.  
  3226. #define S_SERDVNA     (-1)  /* Device not available */
  3227. #define S_SEROFM      (-2)  /* Out of memory        */
  3228. #define S_SERMACT     (-3)  /* Music active        */
  3229. #define S_SERQFUL     (-4)  /* Queue full        */
  3230. #define S_SERBDNT     (-5)  /* Invalid note        */
  3231. #define S_SERDLN      (-6)  /* Invalid note length  */
  3232. #define S_SERDCC      (-7)  /* Invalid note count   */
  3233. #define S_SERDTP      (-8)  /* Invalid tempo        */
  3234. #define S_SERDVL      (-9)  /* Invalid volume        */
  3235. #define S_SERDMD      (-10) /* Invalid mode        */
  3236. #define S_SERDSH      (-11) /* Invalid shape        */
  3237. #define S_SERDPT      (-12) /* Invalid pitch        */
  3238. #define S_SERDFQ      (-13) /* Invalid frequency    */
  3239. #define S_SERDDR      (-14) /* Invalid duration     */
  3240. #define S_SERDSR      (-15) /* Invalid source        */
  3241. #define S_SERDST      (-16) /* Invalid state        */
  3242.  
  3243. #endif /* NOSOUND */
  3244.  
  3245. #ifndef NOCOMM
  3246.  
  3247. #define NOPARITY        0
  3248. #define ODDPARITY        1
  3249. #define EVENPARITY        2
  3250. #define MARKPARITY        3
  3251. #define SPACEPARITY        4
  3252.  
  3253. #define ONESTOPBIT        0
  3254. #define ONE5STOPBITS        1
  3255. #define TWOSTOPBITS        2
  3256.  
  3257. #define IGNORE            0        /* Ignore signal    */
  3258. #define INFINITE        0xFFFF  /* Infinite timeout */
  3259.  
  3260. /* Error Flags */
  3261. #define CE_RXOVER        0x0001  /* Receive Queue overflow        */
  3262. #define CE_OVERRUN        0x0002  /* Receive Overrun Error        */
  3263. #define CE_RXPARITY        0x0004  /* Receive Parity Error        */
  3264. #define CE_FRAME        0x0008  /* Receive Framing error        */
  3265. #define CE_BREAK        0x0010  /* Break Detected            */
  3266. #define CE_CTSTO        0x0020  /* CTS Timeout            */
  3267. #define CE_DSRTO        0x0040  /* DSR Timeout            */
  3268. #define CE_RLSDTO        0x0080  /* RLSD Timeout            */
  3269. #define CE_TXFULL        0x0100  /* TX Queue is full         */
  3270. #define CE_PTO            0x0200  /* LPTx Timeout            */
  3271. #define CE_IOE            0x0400  /* LPTx I/O Error            */
  3272. #define CE_DNS            0x0800  /* LPTx Device not selected     */
  3273. #define CE_OOP            0x1000  /* LPTx Out-Of-Paper        */
  3274. #define CE_MODE         0x8000  /* Requested mode unsupported   */
  3275.  
  3276. #define IE_BADID        (-1)    /* Invalid or unsupported id    */
  3277. #define IE_OPEN         (-2)    /* Device Already Open        */
  3278. #define IE_NOPEN        (-3)    /* Device Not Open            */
  3279. #define IE_MEMORY        (-4)    /* Unable to allocate queues    */
  3280. #define IE_DEFAULT        (-5)    /* Error in default parameters  */
  3281. #define IE_HARDWARE        (-10)   /* Hardware Not Present        */
  3282. #define IE_BYTESIZE        (-11)   /* Illegal Byte Size        */
  3283. #define IE_BAUDRATE        (-12)   /* Unsupported BaudRate        */
  3284.  
  3285. /* Events */
  3286. #define EV_RXCHAR        0x0001  /* Any Character received        */
  3287. #define EV_RXFLAG        0x0002  /* Received certain character   */
  3288. #define EV_TXEMPTY        0x0004  /* Transmitt Queue Empty        */
  3289. #define EV_CTS            0x0008  /* CTS changed state        */
  3290. #define EV_DSR            0x0010  /* DSR changed state        */
  3291. #define EV_RLSD         0x0020  /* RLSD changed state        */
  3292. #define EV_BREAK        0x0040  /* BREAK received            */
  3293. #define EV_ERR            0x0080  /* Line status error occurred   */
  3294. #define EV_RING         0x0100  /* Ring signal detected        */
  3295. #define EV_PERR         0x0200  /* Printer error occured        */
  3296.  
  3297. /* Escape Functions */
  3298. #define SETXOFF         1        /* Simulate XOFF received        */
  3299. #define SETXON            2        /* Simulate XON received        */
  3300. #define SETRTS            3        /* Set RTS high            */
  3301. #define CLRRTS            4        /* Set RTS low            */
  3302. #define SETDTR            5        /* Set DTR high            */
  3303. #define CLRDTR            6        /* Set DTR low            */
  3304. #define RESETDEV        7        /* Reset device if possible     */
  3305.  
  3306. #define LPTx            0x80    /* Set if ID is for LPT device  */
  3307.  
  3308. typedef struct tagDCB
  3309.   {
  3310.     BYTE Id;          /* Internal Device ID             */
  3311.     WORD BaudRate;      /* Baudrate at which runing         */
  3312.     BYTE ByteSize;      /* Number of bits/byte, 4-8         */
  3313.     BYTE Parity;      /* 0-4=None,Odd,Even,Mark,Space    */
  3314.     BYTE StopBits;      /* 0,1,2 = 1, 1.5, 2             */
  3315.     WORD RlsTimeout;      /* Timeout for RLSD to be set         */
  3316.     WORD CtsTimeout;      /* Timeout for CTS to be set         */
  3317.     WORD DsrTimeout;      /* Timeout for DSR to be set         */
  3318.  
  3319.     BYTE fBinary: 1;      /* Binary Mode (skip EOF check     */
  3320.     BYTE fRtsDisable:1;   /* Don't assert RTS at init time   */
  3321.     BYTE fParity: 1;      /* Enable parity checking         */
  3322.     BYTE fOutxCtsFlow:1;  /* CTS handshaking on output         */
  3323.     BYTE fOutxDsrFlow:1;  /* DSR handshaking on output         */
  3324.     BYTE fDummy: 2;      /* Reserved                 */
  3325.     BYTE fDtrDisable:1;   /* Don't assert DTR at init time   */
  3326.  
  3327.     BYTE fOutX: 1;      /* Enable output X-ON/X-OFF         */
  3328.     BYTE fInX: 1;      /* Enable input X-ON/X-OFF         */
  3329.     BYTE fPeChar: 1;      /* Enable Parity Err Replacement   */
  3330.     BYTE fNull: 1;      /* Enable Null stripping         */
  3331.     BYTE fChEvt: 1;      /* Enable Rx character event.      */
  3332.     BYTE fDtrflow: 1;      /* DTR handshake on input         */
  3333.     BYTE fRtsflow: 1;      /* RTS handshake on input         */
  3334.     BYTE fDummy2: 1;
  3335.  
  3336.     char XonChar;      /* Tx and Rx X-ON character         */
  3337.     char XoffChar;      /* Tx and Rx X-OFF character         */
  3338.     WORD XonLim;      /* Transmit X-ON threshold         */
  3339.     WORD XoffLim;      /* Transmit X-OFF threshold         */
  3340.     char PeChar;      /* Parity error replacement char   */
  3341.     char EofChar;      /* End of Input character         */
  3342.     char EvtChar;      /* Recieved Event character         */
  3343.     WORD TxDelay;      /* Amount of time between chars    */
  3344.   } DCB;
  3345.  
  3346. typedef struct tagCOMSTAT
  3347.   {
  3348.     BYTE fCtsHold: 1;    /* Transmit is on CTS hold       */
  3349.     BYTE fDsrHold: 1;    /* Transmit is on DSR hold       */
  3350.     BYTE fRlsdHold: 1;    /* Transmit is on RLSD hold       */
  3351.     BYTE fXoffHold: 1;    /* Received handshake           */
  3352.     BYTE fXoffSent: 1;    /* Issued handshake           */
  3353.     BYTE fEof: 1;    /* End of file character found       */
  3354.     BYTE fTxim: 1;    /* Character being transmitted       */
  3355.     WORD cbInQue;    /* count of characters in Rx Queue */
  3356.     WORD cbOutQue;    /* count of characters in Tx Queue */
  3357.   } COMSTAT;
  3358.  
  3359. int  FAR PASCAL OpenComm(LPSTR, WORD, WORD);
  3360. int  FAR PASCAL SetCommState(DCB FAR *);
  3361. int  FAR PASCAL GetCommState(int, DCB FAR *);
  3362. int  FAR PASCAL ReadComm(int, LPSTR, int);
  3363. int  FAR PASCAL UngetCommChar(int, char);
  3364. int  FAR PASCAL WriteComm(int, LPSTR, int);
  3365. int  FAR PASCAL CloseComm(int);
  3366. int  FAR PASCAL GetCommError(int, COMSTAT FAR *);
  3367. int  FAR PASCAL BuildCommDCB(LPSTR, DCB FAR *);
  3368. int  FAR PASCAL TransmitCommChar(int, char);
  3369. WORD FAR * FAR PASCAL SetCommEventMask(int, WORD);
  3370. WORD FAR PASCAL GetCommEventMask(int, int);
  3371. int  FAR PASCAL SetCommBreak(int);
  3372. int  FAR PASCAL ClearCommBreak(int);
  3373. int  FAR PASCAL FlushComm(int, int);
  3374. int  FAR PASCAL EscapeCommFunction(int, int);
  3375.  
  3376. #endif /* NOCOMM */
  3377.  
  3378. #ifndef NOMDI
  3379.  
  3380. typedef struct tagMDICREATESTRUCT
  3381.   {
  3382.     LPSTR szClass;
  3383.     LPSTR szTitle;
  3384.     HANDLE hOwner;
  3385.     int x,y;
  3386.     int cx,cy;
  3387.     LONG style;
  3388.     LONG lParam;    /* app-defined stuff */
  3389.   } MDICREATESTRUCT;
  3390.  
  3391. typedef MDICREATESTRUCT FAR * LPMDICREATESTRUCT;
  3392.  
  3393. typedef struct tagCLIENTCREATESTRUCT
  3394.   {
  3395.     HANDLE hWindowMenu;
  3396.     WORD idFirstChild;
  3397.   } CLIENTCREATESTRUCT;
  3398.  
  3399. typedef CLIENTCREATESTRUCT FAR * LPCLIENTCREATESTRUCT;
  3400.  
  3401. LONG FAR PASCAL DefFrameProc(HWND,HWND,WORD,WORD,LONG);
  3402. LONG FAR PASCAL DefMDIChildProc(HWND,WORD,WORD,LONG);
  3403.  
  3404. #ifndef NOMSG
  3405. BOOL FAR PASCAL TranslateMDISysAccel(HWND,LPMSG);
  3406. #endif
  3407.  
  3408. WORD FAR PASCAL ArrangeIconicWindows(HWND);
  3409.  
  3410. #endif /* NOMDI */
  3411.  
  3412. #endif /* NOUSER */
  3413.  
  3414. #ifndef NOHELP
  3415.  
  3416. /*  Help engine section.  */
  3417.  
  3418. /* Commands to pass WinHelp() */
  3419. #define HELP_CONTEXT    0x0001     /* Display topic in ulTopic */
  3420. #define HELP_QUIT    0x0002     /* Terminate help */
  3421. #define HELP_INDEX    0x0003     /* Display index */
  3422. #define HELP_HELPONHELP 0x0004     /* Display help on using help */
  3423. #define HELP_SETINDEX    0x0005     /* Set the current Index for multi index help */
  3424. #define HELP_KEY    0x0101     /* Display topic for keyword in offabData */
  3425. #define HELP_MULTIKEY   0x0201
  3426.  
  3427. BOOL FAR PASCAL WinHelp(HWND hwndMain, LPSTR lpszHelp, WORD usCommand, DWORD ulData);
  3428.  
  3429. typedef struct tagMULTIKEYHELP
  3430.   {
  3431.     WORD    mkSize;
  3432.     BYTE    mkKeylist;
  3433.     BYTE    szKeyphrase[1];
  3434.   } MULTIKEYHELP;
  3435.  
  3436. #endif /* NOHELP */
  3437.  
  3438. #ifndef NOPROFILER
  3439.  
  3440. /* function declarations for profiler routines contained in Windows libraries */
  3441. int  far pascal ProfInsChk(void);
  3442. void far pascal ProfSetup(int,int);
  3443. void far pascal ProfSampRate(int,int);
  3444. void far pascal ProfStart(void);
  3445. void far pascal ProfStop(void);
  3446. void far pascal ProfClear(void);
  3447. void far pascal ProfFlush(void);
  3448. void far pascal ProfFinish(void);
  3449.  
  3450. #endif /* NOPROFILER */
  3451.